]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[doc] Teach 0-args form of super in Programming FAQ (GH-22176)
authorAndre Delfino <adelfino@gmail.com>
Sun, 20 Sep 2020 17:09:50 +0000 (14:09 -0300)
committerGitHub <noreply@github.com>
Sun, 20 Sep 2020 17:09:50 +0000 (10:09 -0700)
Doc/faq/programming.rst

index eecbbf4a5c4ff72f4d3e92e4337c394102df35df..fd0adc378bfa6f7ab0d5701e50c63705c290de14 100644 (file)
@@ -1504,20 +1504,19 @@ Most :meth:`__setattr__` implementations must modify ``self.__dict__`` to store
 local state for self without causing an infinite recursion.
 
 
-How do I call a method defined in a base class from a derived class that overrides it?
---------------------------------------------------------------------------------------
+How do I call a method defined in a base class from a derived class that extends it?
+------------------------------------------------------------------------------------
 
 Use the built-in :func:`super` function::
 
    class Derived(Base):
        def meth(self):
-           super(Derived, self).meth()
+           super().meth()  # calls Base.meth
 
-For version prior to 3.0, you may be using classic classes: For a class
-definition such as ``class Derived(Base): ...`` you can call method ``meth()``
-defined in ``Base`` (or one of ``Base``'s base classes) as ``Base.meth(self,
-arguments...)``.  Here, ``Base.meth`` is an unbound method, so you need to
-provide the ``self`` argument.
+In the example, :func:`super` will automatically determine the instance from
+which it was called (the ``self`` value), look up the :term:`method resolution
+order` (MRO) with ``type(self).__mro__``, and return the next in line after
+``Derived`` in the MRO: ``Base``.
 
 
 How can I organize my code to make it easier to change the base class?