bpo-43682: @staticmethod inherits attributes#25268
bpo-43682: @staticmethod inherits attributes#25268vstinner merged 3 commits intopython:masterfrom vstinner:wraps_staticmethod
Conversation
|
functools_wraps() call in cm_init() failed because Python didn't initialize PyClassMethod_Type type at startup. I created https://bugs.python.org/issue43770 to fix the issue: it's now fixed by df5dc1c |
|
I chose the following representation: |
Static methods (@staticmethod) and class methods (@classmethod) now inherit the method attributes (__module__, __name__, __qualname__, __doc__, __annotations__) and have a new __wrapped__ attribute. Changes: * Add a repr() method to staticmethod and classmethod types. * Add tests on the @classmethod decorator.
…ethod` These attributes have all been added in Python 3.10+; see python/cpython#25268
|
@vstinner What’s this new |
It's a standard attribute added by |
|
@carljm Thanks, so I guess in this case it’s a documented duplicate of |
| PyObject *value = PyObject_GetAttr(wrapped, name); | ||
| if (value == NULL) { | ||
| if (PyErr_ExceptionMatches(PyExc_AttributeError)) { | ||
| PyErr_Clear(); |
There was a problem hiding this comment.
It is better to use _PyObject_LookupAttr() here. See #106303.
Static methods (@staticmethod) and class methods (@classmethod) now
inherit the method attributes (module, name, qualname,
doc, annotations) and have a new wrapped attribute.
Changes:
https://bugs.python.org/issue43682