mirror of
https://github.com/python/cpython.git
synced 2025-09-30 12:21:51 +00:00
bpo-30354: Update data model documentation for super() (GH-1561) (GH-1868)
The data model section of the language reference was written well
before the zero-argument form of super() was added.
To avoid giving the impression that they're doing something
unusual, this updates the description of `__new__` and `__init__`
to use the zero-argument form.
Patch by Cheryl Sabella.
(cherry picked from commit 12b1c18098
)
This commit is contained in:
parent
00b381b9a7
commit
ad13d54646
1 changed files with 6 additions and 6 deletions
|
@ -1119,9 +1119,9 @@ Basic customization
|
||||||
(usually an instance of *cls*).
|
(usually an instance of *cls*).
|
||||||
|
|
||||||
Typical implementations create a new instance of the class by invoking the
|
Typical implementations create a new instance of the class by invoking the
|
||||||
superclass's :meth:`__new__` method using ``super(currentclass,
|
superclass's :meth:`__new__` method using ``super().__new__(cls[, ...])``
|
||||||
cls).__new__(cls[, ...])`` with appropriate arguments and then modifying the
|
with appropriate arguments and then modifying the newly-created instance
|
||||||
newly-created instance as necessary before returning it.
|
as necessary before returning it.
|
||||||
|
|
||||||
If :meth:`__new__` returns an instance of *cls*, then the new instance's
|
If :meth:`__new__` returns an instance of *cls*, then the new instance's
|
||||||
:meth:`__init__` method will be invoked like ``__init__(self[, ...])``, where
|
:meth:`__init__` method will be invoked like ``__init__(self[, ...])``, where
|
||||||
|
@ -1145,7 +1145,7 @@ Basic customization
|
||||||
class constructor expression. If a base class has an :meth:`__init__`
|
class constructor expression. If a base class has an :meth:`__init__`
|
||||||
method, the derived class's :meth:`__init__` method, if any, must explicitly
|
method, the derived class's :meth:`__init__` method, if any, must explicitly
|
||||||
call it to ensure proper initialization of the base class part of the
|
call it to ensure proper initialization of the base class part of the
|
||||||
instance; for example: ``BaseClass.__init__(self, [args...])``.
|
instance; for example: ``super().__init__([args...])``.
|
||||||
|
|
||||||
Because :meth:`__new__` and :meth:`__init__` work together in constructing
|
Because :meth:`__new__` and :meth:`__init__` work together in constructing
|
||||||
objects (:meth:`__new__` to create it, and :meth:`__init__` to customize it),
|
objects (:meth:`__new__` to create it, and :meth:`__init__` to customize it),
|
||||||
|
@ -1578,8 +1578,8 @@ Class Binding
|
||||||
``A.__dict__['x'].__get__(None, A)``.
|
``A.__dict__['x'].__get__(None, A)``.
|
||||||
|
|
||||||
Super Binding
|
Super Binding
|
||||||
If ``a`` is an instance of :class:`super`, then the binding ``super(B,
|
If ``a`` is an instance of :class:`super`, then the binding ``super(B, obj).m()``
|
||||||
obj).m()`` searches ``obj.__class__.__mro__`` for the base class ``A``
|
searches ``obj.__class__.__mro__`` for the base class ``A``
|
||||||
immediately preceding ``B`` and then invokes the descriptor with the call:
|
immediately preceding ``B`` and then invokes the descriptor with the call:
|
||||||
``A.__dict__['m'].__get__(obj, obj.__class__)``.
|
``A.__dict__['m'].__get__(obj, obj.__class__)``.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue