mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-19072: Classmethod can wrap other classmethod like descriptors (GH-29634)
staticmethod() also became callable in Python 3.10.
See: b83861f02
.
This commit is contained in:
parent
d32316a2aa
commit
e34809e1c2
1 changed files with 8 additions and 1 deletions
|
@ -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::
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue