subclass of integers
Mark Morss
mfmorss at aep.com
Fri Sep 14 10:31:47 EDT 2007
On Sep 14, 10:30 am, Mark Morss <mfmo... at aep.com> wrote:
> I would like to construct a class that includes both the integers and
> None. I desire that if x and y are elements of this class, and both
> are integers, then arithmetic operations between them, such as x+y,
> return the same result as integer addition. However if either x or y
> is None, these operations return None.
>
> It's simple enough to construct a subclass of integers that behave in
> this way:
>
> class Nint(int):
> def __add__(self,other):
> if (other != None):
> return self+other
> else:
> return None
> def __radd__(self,other):
> if (other != None):
> return other+self
> else:
> return None
> #...and so forth
>
> However I have not been able to figure out how to make it so that
> None, as well as an integer, could be an element of my class. My
> preliminary impression is that I have to override int.__new__; but I
> am uncertain how to do that and have been unable to find anything on
> the web explaining that. Indeed I haven't been able to find much
> about __new__ at all. Overriding this method of built-in classes
> seems to be quite unusual.
>
> I would very much appreciate anyone's help.
I meant of course that arithmetic operations between integer elements
would return the same result as the corresponding integer operations,
not necessarily addition.
More information about the Python-list
mailing list