在下面的代码中,我编写了依赖装饰器,它只是将一些函数作为参数并在调用装饰函数之前调用它们。所以当我使用这个脚本时,我会得到输出:
using f
using g
using f
using h
但现在我的问题来了。如何做到不重复依赖?所以当我使用 h() 时,f() 只会被调用一次?我试图从函数中删除重复项,但例如对于 h(),它包含 wapper 和 f()。我应该以其他方式收集它们吗?
class depends(object):
functs = []
def __init__(self, *f):
self.functs = []
for i in f:
self.functs.append(i)
def __call__(self, fun):
def wrapper():
for i in self.functs:
i()
return fun()
return wrapper
def f():
print 'using f'
@depends(f)
def g():
print 'using g'
@depends(g, f)
def h():
print 'using h'
h()