Looking at the documentation of Py3.3:

http://docs.python.org/3.3/reference/datamodel.html#object.__new__

I saw the method `__new__()` is called automatically when I create an istance. After the call to __new__(), if it returns an instance `self` then `self.__init__()` is called.

Because when I call an instance the __call__ method is called, and because the classes are instances of type, I thought when I call a Foo class this imply the call type.__call__(Foo), and so this one manages the Foo.__new__ and Foo.__init__ calls:

>>> class Foo:
...     def __new__(cls):
...         print('Foo.__new__()')
...         return super().__new__(cls)
...     def __init__(self):
...         print('Foo.__init__(self)')
...
>>> f = type.__call__(Foo)
Foo.__new__()
Foo.__init__(self)

Is that right? Thanks in advance


--
Marco
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to