给定以下模拟静态方法的代码:
class StaticMethod(object):
"Emulate PyStaticMethod_Type() in Objects/funcobject.c"
def __init__(self, f):
self.f = f
def __get__(self, obj, objtype=None):
print('getting')
return self.f
class A:
def func2():
print('hello')
func2 = StaticMethod(func2)
当我打电话时:
A.func2
我得到了我的期望:
getting
<function __main__.A.func2>
当我打电话时:A.func2()
我得到:
getting
hello
这是否意味着每当您调用 Descriptor Decorator 方法时,Python 首先会从 Descriptor 的__get__
方法中检索它?
如果是,那么该方法实际上是如何被调用的?引擎盖下到底发生了什么?