在Python装饰器中获取类
在此代码中:在Python装饰器中获取类,python,Python,在此代码中: 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 T
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时运行。我怎样才能上网?我只能阅读self.running
def online_only(func,self)
中不能有两个参数?它将引发TypeError,因此将其更改为def online\u only(func)
self
作为第一个参数传递给包装函数,因此只需在f
中特别处理第一个参数:
def online_only(func):
def f(self, *args, **kwargs):
if self.running:
return func(self, *args, **kwargs)
else:
return False
return f
def online_only(func):
def f(self, *args, **kwargs):
if self.running:
return func(self, *args, **kwargs)
else:
return False
return f