[Python-checkins] bpo-19072: Classmethod can wrap other classmethod like descriptors (GH-29634)
ambv
webhook-mailer at python.org
Fri Nov 19 13:44:00 EST 2021
https://github.com/python/cpython/commit/e34809e1c2a09478f4e0651d551c9c12d3c556ab
commit: e34809e1c2a09478f4e0651d551c9c12d3c556ab
branch: main
author: Raymond Hettinger <rhettinger at users.noreply.github.com>
committer: ambv <lukasz at langa.pl>
date: 2021-11-19T19:43:49+01:00
summary:
bpo-19072: Classmethod can wrap other classmethod like descriptors (GH-29634)
staticmethod() also became callable in Python 3.10.
See: b83861f02.
files:
M Doc/howto/descriptor.rst
diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst
index 575caeb720f3d..6ce062d0fa853 100644
--- a/Doc/howto/descriptor.rst
+++ b/Doc/howto/descriptor.rst
@@ -1264,6 +1264,9 @@ Using the non-data descriptor protocol, a pure Python version of
def __get__(self, obj, objtype=None):
return self.f
+ def __call__(self, *args, **kwds):
+ return self.f(*args, **kwds)
+
.. testcode::
:hide:
@@ -1272,6 +1275,8 @@ Using the non-data descriptor protocol, a pure Python version of
def f(x):
return x * 10
+ wrapped_ord = StaticMethod(ord)
+
.. doctest::
:hide:
@@ -1279,6 +1284,8 @@ Using the non-data descriptor protocol, a pure Python version of
30
>>> E_sim().f(3)
30
+ >>> wrapped_ord('A')
+ 65
Class methods
@@ -1344,7 +1351,7 @@ Using the non-data descriptor protocol, a pure Python version of
if cls is None:
cls = type(obj)
if hasattr(type(self.f), '__get__'):
- return self.f.__get__(cls)
+ return self.f.__get__(cls, cls)
return MethodType(self.f, cls)
.. testcode::
More information about the Python-checkins
mailing list