我有一个类,长这样:
class Test(object):
data = {}
@add_to_data(1)
def method_1(self, x, y):
pass
@add_to_data(1, 2, 3)
def method_2(self, x, y):
pass
@add_to_data(5, 6, 7)
def method_3(self, x, y):
pass
我希望在“导入时”类的 data
属性为:
>>> Test.data
{'method_1': [1], 'method_2': [1, 2, 3], 'method_3': [5, 6, 7]}
目前我有这个(data
是一个 defaultdict
):
def add_to_data(*items):
def decorator(func):
for item in items:
name = func.__name__
cls = ??
cls.data[name].append(item)
return func
return decorator
但我不知道如何获取类对象。能帮忙吗?
sys._getframe()
,你是对的,那个会起作用。 - abarnertzope.interface
源代码时。这是一种使用装饰器看起来非常简洁的技巧,但对于其他人来说,实现可能会很困难。 - James Henstridge