Felix Wiemann wrote: > Steven Bethard wrote: >> http://www.python.org/2.2.3/descrintro.html#__new__ > [snip] > > I'm just seeing that the web page says: > > | 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. > > However, the latter doesn't seem to be true, or am I missing > something? > >>>>class A(object): > ... def __init__(self): > ... print 'Init of A.' > ... > >>>>instance = A() > Init of A. > >>>>class B(object): > ... def __new__(self): > ... return instance > ... def __init__(self): > ... print 'Init of B.' > ... > >>>>B() # <--------- A's __init__ is *not* called. > <__main__.A object at 0x4062424c> > >>>>instance = object.__new__(B) >>>>B() # <--------- B's __init__ is called > Init of B. > <__main__.B object at 0x406243ec> > > So there seems to be some type-checking in type.__call__.
Yeah, I saw the same thing in playing around with this. Don't know what to make of it. I wonder if we should file a documentation bug? I can't find __new__ explained anywhere in the Language Reference. Can documentation bugs be filed for descrintro.html?
STeVe -- http://mail.python.org/mailman/listinfo/python-list