在下面的代码中,我使用装饰器对类变量执行更改
class MyClass():
def __init__(self):
self.vars = [1,2]
self.log = None
def _mydecorator(function):
def logger(self):
self.log = "BLA"
function(self)
return logger
@_mydecorator
def addone(self):
print("Inside Class: %s" % map(lambda x: x+1, self.vars))
return map(lambda x: x+1, self.vars)
if __name__ == '__main__':
myclass = MyClass()
print myclass.addone()
此脚本返回:
Inside Class: [2,3]
None
为什么值没有传递给调用者?
如果我不装饰addone
我得到的功能:
Inside Class: [2,3]
[2,3]
这个装饰器有什么变化?