请帮助我理解如何从两个装饰器接收输出。 这是我的密码:
def check1(function1):
def getver1():
ver1 = 0.1
return getattr(function1(ver1))
return getver1()
def check2(function2):
def getver2():
ver2 = 0.2
return getattr(function2(ver2))
return getver2()
@check1
@check1
class ClassObj(object):
def __init__(self, *args, **kwargs):
print(args)
print(kwargs)
从这里,我只收到第二个的输出,但为什么呢
('0.2')
我想你需要修改你的代码。有相当多的bug,您使用了
check1
两次而没有使用check2
。在当前代码中不可能看到('0.2')
的输出而且,您使用类装饰器的方式是错误的。一个很好的参考是本文:https://krzysztofzuraw.com/blog/2016/python-class-decorators.html
装饰器从上到下堆叠。代码类似
相当于
也就是说,用
check1
装饰ClassObj
,然后用check2
装饰结果但是,您遇到的问题是,两个装饰器实际上都不返回类。它们都使用给定类的实例调用
getattr
(不正确)相关问题 更多 >
编程相关推荐