我想使用装饰器,该装饰器是不同python模块中的类中的函数。
全局创建该类的实例,并使用装饰器(如'@ global_obj.my_decor')即可。
但是我不知何故感觉不太干净。还有其他方法吗?
答案 0 :(得分:0)
如果只是想避免使用全局对象(我可能希望这样做),则始终可以避免使用语法糖,并手动创建,对象和修饰函数:
In [23]: class Foo:
...: def deco(self, f):
...: def wrapper(*args, **kwargs):
...: print("hi")
...: result = f(*args, **kwargs)
...: print("I am decorated")
...: return result
...: return wrapper
...:
In [24]: def func(x, y):
...: return 2*x + 3*y
...:
...:
In [25]: func = Foo().deco(func)
In [26]: func(3,2)
hi
I am decorated
Out[26]: 12
对我来说,这表明如果不开始上课,您可能会更好。但没有更多细节,我只能猜测。