The curious behavior of integer objects
Gabriel Genellina
gagsl-py at yahoo.com.ar
Mon Jan 15 17:57:46 EST 2007
At Monday 15/1/2007 19:28, Jim B. Wilson wrote:
>Am I nuts? Or only profoundly confused? I expected the this little script
>to print "0":
>
>class foo(int):
> def __init__(self, value):
> self = value & 0xF
>
>print foo(0x10)
>
>Instead, it prints "16" (at least on python 2.4.4 (Linux) and 2.5 (Wine).
Integers are immutable. Insert a print statement and you'll see your
__init__ is never called. Anyway, what would you expect from "self =
something"?
Use __new__ instead:
py> class foo(int):
... def __new__(cls, value):
... return int(value & 0xF)
...
py> foo(1)
1
py> foo(0x10)
0
See "Special method names" inside the Python Reference Manual.
--
Gabriel Genellina
Softlab SRL
__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas
More information about the Python-list
mailing list