在这段代码中:
def online_only(func, self):
def f(*args, **kwargs):
if self.running:
return func(*args, **kwargs)
else:
return False
return f
class VM(object):
@property
def running(self):
return True
@property
@online_only
def diskinfo(self):
return True
我希望 diskinfo
仅在 VM.running
返回 True
时运行。如何让 online_only
能够读取 self.running
?
最佳答案
self
作为第一个参数传递给包装函数,所以在 f
中只对第一个参数进行特殊处理:
def online_only(func):
def f(self, *args, **kwargs):
if self.running:
return func(self, *args, **kwargs)
else:
return False
return f
关于python - 在 Python 装饰器中获取类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2309124/