我有一个进程(类),我将其拆分成几个步骤(方法)。只有在前一步成功的情况下,才能调用每个步骤。我创建了一个run()方法,它通过在调用下一个步骤之前检查每个步骤来运行进程:
def run(self):
status = False
if step_1():
if step_2():
if step_3():
etc... [several nested IFs]
status = True
else:
self.logger.error('Error in step 3')
else:
self.logger.error('Error in step 2')
else:
self.logger.error('Error in step 1')
return status
有没有更优雅的方式(一种设计模式?)为了避免这些嵌套的IF语句?
非常感谢,
发布于 2016-07-28 21:49:58
您可以将您的步骤放在一个列表中:
my_plan = (step1, step2, step3, ..., stepN)
然后在循环中执行它们:
for step in my_plan:
if not step():
print 'Error in %s' % step.__name__
status = False
break
else:
status = True
发布于 2018-07-08 06:43:27
如果你没有太多的步骤,或者你不想把你的步骤函数放在一个序列中,这是另一种选择。
def run(self):
status = step_1():
if status:
status = step_2():
if status:
status = step_3():
etc... [several IFs]
if status is False:
self.logger.error('Error')
return status
发布于 2016-07-28 22:27:37
可以把它看作是失败的returning False,而不是传递returning。
def run(self):
if not step_1():
self.logger.error('Error in step 1')
return False
if not step_2():
self.logger.error('Error in step 2')
return False
if not step_3():
self.logger.error('Error in step 3')
return False
return True
https://stackoverflow.com/questions/38638292
复制相似问题