Message280633
There is an specific Python behavior on object instantiation that is "expected" but not explicit, even for avanced users:
When a custom class defines `__init__` with extra parameters, but do not overrides `__new__`, it simply works. But if `__new__`is defined it has to match `__init__`s signature.
This behavior is not documented anywhere.
I could found this issue was discussed in this thread earlier this year, starting with this e-mail:
https://mail.python.org/pipermail/python-list/2016-March/704013.html
I propose the following paragraph from a follow up e-mail by "eryksun at gmail.com" to be added to the description of "__new__" in the Data Model documentation page:
"""
[The implementation] knows whether a type overrides the __new__ or
__init__ methods. You're expected to consume additional arguments in
this case. However, excess arguments are ignored in object.__new__ if
a type overrides __init__ without overriding __new__ (i.e. your second
example). Excess arguments are also ignored in object.__init__ if a
type overrides __new__ without overriding __init__.
"""
(Source: https://mail.python.org/pipermail/python-list/2016-March/704024.html) |
|
Date |
User |
Action |
Args |
2016-11-12 05:50:12 | jsbueno | set | recipients:
+ jsbueno, docs@python |
2016-11-12 05:50:12 | jsbueno | set | messageid: <1478929812.24.0.930722962265.issue28672@psf.upfronthosting.co.za> |
2016-11-12 05:50:12 | jsbueno | link | issue28672 messages |
2016-11-12 05:50:11 | jsbueno | create | |
|