subclass of integers
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Sat Sep 15 13:33:21 EDT 2007
Mark Morss a écrit :
> 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.
You'll find documentation in the FineManual(tm):
http://docs.python.org/ref/customization.html
http://www.python.org/download/releases/2.2.3/descrintro/#__new__
and a possible (even if imperfect IMHO) example in my answer to
Zentrader in the thread.
Now would you be kind enough to satisfy my curiousity and explain your
use case ?-)
More information about the Python-list
mailing list