Hello All,
I'm running 2.3.4
I was reading the documentation for classes & types
http://www.python.org/2.2.3/descrintro.html
And stumbled on this paragraph:
"""
__new__ must return an object. There's nothing that requires that it return a
new object that is an instance of its class argument, although that is the
convention. If you return an existing object, the constructor call will still
call its __init__ method. If you return an object of a different class, its
__init__ method will be called.
"""
The quote implies that when I call carol, b.__init__ should be called.
However, this does not seem to be the case (see code below). What am I not
understanding? Shouldn't the interpreter call b.__init__ when b is returned
from carol.__new__?
James
py> class bob(object):
.... def __init__(self):
.... print self.x
.... x = 2
....
py> class carol(object):
.... def __new__(cls):
.... return b
....
py> b=bob()
py> b.x
2
py> c = carol() # should print "2"
py> c
<__main__.bob object at 0x404333cc>
--
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095
http://www.jamesstroud.com/