Kaydet (Commit) 12b1c180 authored tarafından csabella's avatar csabella Kaydeden (comit) Nick Coghlan

bpo-30354: Update data model documentation for super() (GH-1561)

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.
üst d48214f2
......@@ -1119,9 +1119,9 @@ Basic customization
(usually an instance of *cls*).
Typical implementations create a new instance of the class by invoking the
superclass's :meth:`__new__` method using ``super(currentclass,
cls).__new__(cls[, ...])`` with appropriate arguments and then modifying the
newly-created instance as necessary before returning it.
superclass's :meth:`__new__` method using ``super().__new__(cls[, ...])``
with appropriate arguments and then modifying the newly-created instance
as necessary before returning it.
If :meth:`__new__` returns an instance of *cls*, then the new instance's
: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__`
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
instance; for example: ``BaseClass.__init__(self, [args...])``.
instance; for example: ``super().__init__([args...])``.
Because :meth:`__new__` and :meth:`__init__` work together in constructing
objects (:meth:`__new__` to create it, and :meth:`__init__` to customize it),
......@@ -1582,8 +1582,8 @@ Class Binding
``A.__dict__['x'].__get__(None, A)``.
Super Binding
If ``a`` is an instance of :class:`super`, then the binding ``super(B,
obj).m()`` searches ``obj.__class__.__mro__`` for the base class ``A``
If ``a`` is an instance of :class:`super`, then the binding ``super(B, obj).m()``
searches ``obj.__class__.__mro__`` for the base class ``A``
immediately preceding ``B`` and then invokes the descriptor with the call:
``A.__dict__['m'].__get__(obj, obj.__class__)``.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment