]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-113157: Document and test __get__ for MethodType (gh-115492)
authorRaymond Hettinger <rhettinger@users.noreply.github.com>
Tue, 20 Feb 2024 07:53:25 +0000 (01:53 -0600)
committerGitHub <noreply@github.com>
Tue, 20 Feb 2024 07:53:25 +0000 (01:53 -0600)
Doc/howto/descriptor.rst

index 7d787c1c42df648d4e0f1f631fbbc8a9d420652a..e72386a4da4f8a4e18cac7d4efea37278ddd9125 100644 (file)
@@ -1192,6 +1192,10 @@ roughly equivalent to:
             "Emulate method_getattro() in Objects/classobject.c"
             return getattr(self.__func__, name)
 
+        def __get__(self, obj, objtype=None):
+            "Emulate method_descr_get() in Objects/classobject.c"
+            return self
+
 To support automatic creation of methods, functions include the
 :meth:`__get__` method for binding methods during attribute access.  This
 means that functions are non-data descriptors that return bound methods
@@ -1214,8 +1218,20 @@ descriptor works in practice:
 .. testcode::
 
     class D:
-        def f(self, x):
-             return x
+        def f(self):
+             return self
+
+    class D2:
+        pass
+
+.. doctest::
+    :hide:
+
+    >>> d = D()
+    >>> d2 = D2()
+    >>> d2.f = d.f.__get__(d2, D2)
+    >>> d2.f() is d
+    True
 
 The function has a :term:`qualified name` attribute to support introspection: