这个标题很好地解释了这个问题。我不知道是否有一个切实可行的解决方案,或者我是否对代码的行为过于挑剔。 这篇文章是在暗示正确的方向,但我从来没有得到任何代码工作。 https://medium.com/@adamshort/python-gems-5-silent-function-chaining-a6501b3ef07e
以下是我想要的功能示例:
class Calc:
def __init__(self, n=0):
self.n = n
def add(self, n):
self.n += n
return self
def might_return_false(self):
return False
def print(self):
print(self.n)
return self
w = Calc()
# The rest of the chain after might_return_false should be ignored
addedTwice = w.add(5).might_return_false().add(5).print()
w.print() # Should print 5
print(addedTwice) # Should print False
异常是中断链式操作的好方法:
你也可以这样做:
如果试图使用
return
而不是raise
来执行此操作,则需要检查链的每个步骤的状态,以便可以切换到其他代码分支(可能通过if
块)。引发异常具有非常有用的特性,即无论您在何处,都会立即中断执行,并直接将您带到最近的匹配except
我认为这篇文章的意思或多或少与下面类似(但我更喜欢使用exception的另一个答案,因为它更可读,更易于测试)。 创建帮助器类:
及
相关问题 更多 >
编程相关推荐