我必须遵循将使用从类变量派生的可链接方法创建对象的类。由于这个代码是相当重复的,我的挑战就是如何能够在应用方法的装饰a,b和c。我面临的问题是我似乎无法找到一种方法来构造将返回实例 ( self)的包装器。有没有更好的方法来构建它?
class Test:
def __init__(self, a, b, c):
self._a = a
self._b = b
self._c = c
self.call_chain = []
def a(self, truth):
def func():
return self._a == truth
self.call_chain.append(func)
return self
def b(self, truth):
def func():
return self._b == truth
self.call_chain.append(func)
return self
def c(self, val):
def func():
return self._c == val
self.call_chain.append(func)
return self
def evaluate(self):
try:
for f in self.call_chain:
if f() == False:
raise ValueError('False encountered')
except ValueError:
self.call_chain.clear()
return False
self.call_chain.clear()
return True
它像这样链接起来:
c = Test(True, False, 13)
c.a(True).b(False).c(13).evaluate()
FFIVE
相关分类