我试图了解描述符如何在 python 中工作。我得到了大局,但我在理解 @staticmethod 装饰器时遇到了问题。
我具体指的代码来自相应的python doc:https ://docs.python.org/3/howto/descriptor.html
class Function(object):
. . .
def __get__(self, obj, objtype=None):
"Simulate func_descr_get() in Objects/funcobject.c"
if obj is None:
return self
return types.MethodType(self, obj)
class StaticMethod(object):
"Emulate PyStaticMethod_Type() in Objects/funcobject.c"
def __init__(self, f):
self.f = f
def __get__(self, obj, objtype=None):
return self.f
我的问题是:当self.f
在最后一行访问时,它本身不会f
被识别为描述符(因为每个函数都是非数据描述符),因此会绑定到 self,它是一个 StaticMethod 对象?