New submission from Michael J. Sullivan :
class A:
def foo(self, cls): return 1
class B: pass
class B:
bar = classmethod(A().foo)
B.bar()
In Python 3.8 and prior, this worked. Since Python 3.9, it produces "TypeError:
A.foo() missing 1 required positional argument:
Change by Michael J. Sullivan :
--
keywords: +patch
pull_requests: +29517
stage: -> patch review
pull_request: https://github.com/python/cpython/pull/31367
___
Python tracker
<https://bugs.python.org/issu
Change by Michael J. Sullivan :
--
pull_requests: +13419
___
Python tracker
<https://bugs.python.org/issue36878>
___
___
Python-bugs-list mailing list
Unsub
Michael J. Sullivan added the comment:
I think this is done!
--
___
Python tracker
<https://bugs.python.org/issue36878>
___
___
Python-bugs-list mailin
New submission from Michael J. Sullivan :
The different varieties of PyObject_CallMethod* routines all operate by doing a
PyObject_GetAttr to fetch an object to call. It seems likely to be worthwhile
to take advantage of the LOAD_METHOD optimization that avoids creating a bound
method object
Change by Michael J. Sullivan :
--
keywords: +patch
pull_requests: +13433
stage: -> patch review
___
Python tracker
<https://bugs.python.org/issue37017>
___
_
Change by Michael J. Sullivan :
--
nosy: +brett.cannon, serhiy.storchaka, vstinner, yselivanov
___
Python tracker
<https://bugs.python.org/issue37017>
___
___
Michael J. Sullivan added the comment:
I believe that this is orthogonal to PEP 590.
PyObject_CallMethodObjArgs and friends take varargs which need to be copied
into an array one way or another. It is easy (and efficient) to prepend the
base while copying the function arguments into the