我需要你的帮助)在第一个示例中,当在函数中使用装饰器时,我随后可以单独使用装饰函数(calc),但在第二个示例中,我不能:/如何做到这一点???!
示例 1:
def prog(calc):
def print_res():
calc()
print('print result')
return print_res
def calc():
print('calculate')
x = prog(calc)
x()
print()
calc()
结论:
calculate
print result
calculate
示例 2:
class A:
def __init__(self, l = 0):
self.l = l
def account(calc):
def print_res(self, n, m):
calc(self, n, m)
print('result =', self.l)
return print_res
@account
def calc(self, n, m):
self.l = n + m
test = A()
test.calc(1, 1)
结论:
result = 2
你有一个不一致的电话。第一种情况,没有指定修饰,函数作为参数传递。在第二种情况下,它将适用于任何呼叫。另外,装饰函数写成静态的(没有自我),但这没有标记。因此,可能有几种解决方案。例如
这样的结论会是什么
嗯,总的来说,这就是它的用途...... :)