[英]Get class in Python decorator
在這段代碼中:
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
def online_only(func, self)
有兩個參數? 它會引發TypeError,因此將其更改為def online_only(func)
def online_only(func):
def f(self):
if self.running:
return func(self)
else:
return False
return f
class VM(object):
@property
def running(self):
return True
@property
@online_only
def diskinfo(self):
return True
print VM().diskinfo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.