当你装饰一个方法时,它还没有绑定到类,因此还没有im_class
属性。我正在寻找一种方法来获取有关装饰器内的类的信息。我试过这个:
import types
def decorator(method):
def set_signal(self, name, value):
print name
if name == 'im_class':
print "I got the class"
method.__setattr__ = types.MethodType(set_signal, method)
return method
class Test(object):
@decorator
def bar(self, foo):
print foo
但它不打印任何东西。
我可以想象这样做:
class Test(object):
@decorator(klass=Test)
def bar(self, foo):
print foo
但如果我能避免它,它会让我很开心。