メソッドをデコレートするとき、それはまだクラスにバインドされていないため、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
しかし、私がそれを避けることができれば、それは私の一日になるでしょう。