原本想实现这样的功能
class a:
logs=[]
@self.log()
def b():
print('1')
def log(self,text=''):
def decorator(func):
@functools.wraps(func)
def wrapper(s, *args, **kw):
self.logs.append(func,args,kw)
return func(*args, **kw)
return wrapper
return decorator
def redo(self):
for _ in self.logs:
_[0](*_[1],**_[2])
但这是错误的,@self.log()会报错 NameError: name 'self' is not defined 也想过把 log 拉出来,不放在 class a 里,有 2 个思路: 1.log 加一个 object 的参数,每次把这个 class 传进去 2.log()用 class 包裹起来,先初始化把 class a 传进去,后来调用就不用加 object 的参数了。
但是遇到问题 思路 1:@log(self)也是会报错 NameError: name 'self' is not defined 思路 2:没办法所有操作在 class a 内完成,没办法做成包调用
求助 QAQ
)