如何在类定义中引用类对象?你能告诉我你会怎么做吗?或者更具体地说,您如何在类方法的装饰器中传递类对象?这是一个简单的示例,我正在尝试将我声明的第二种方法传递给第一个装饰器。
def decorate(w):
def _wrap(f):
def _call(*args, **kwargs):
return w(f(*args, **kwargs))
def _call
return _wrap
class A():
@dec(A.w)
def f():
return 2
def w(f):
return fr + 5
正如预期的那样,引发了异常
NameError: name 'A' is not defined
作为我的调查的结果,我了解到当我在里面时globals()
不包含key或函数,但在里面定义。所以我可能可以通过字符串名称(例如)找到传递的方法,但在这种情况下,不可能在闭包内缓存方法搜索。A
decorate
_wrap
_call
@dec('A.w')
_wrap
那么你如何解决这个问题?:)