问题描述
我希望重构一些重复的代码块,如下所示:
if condition == True:
print("Doing some light work.")
else:
print("Doing some work.")
pass # this may be different for different purposes.
print("Doing some other work.")
其中所有打印语句代表一些在块重复中通用的任务。
有很多这样的代码块,而我正在尝试排除重复部分,即上述块中pass
表示的语句以外的所有内容。
换句话说,我正在寻找类似于pass
语句周围并能够处理if-else语句的contextmanager。用Python可以做到这一点吗?
解决方法
也许您应该更广泛地看待代码,并通过应用OOP的基本原理来重新设计代码:
class BaseWorker:
def do_work(self,condition):
if condition:
print("Doing some light work.")
else:
print("Doing some work.")
self.specific_work()
print("Doing some other work.")
def specific_work(self):
raise NotImplementedError
class WorkerA(BaseWorker):
def specific_work(self):
"""worker A processing"""
...
class WorkerB(BaseWorker):
def specific_work(self):
"""worker B processing"""
...
,
编写一个函数,该函数对于不同部分采用回调函数。
def do_stuff(condition,callback):
if condition:
print("Doing some light work")
else:
print("Doing some work")
callback()
print("Doing some other work")
您还可以将其重写为在定义回调函数之前使用的装饰器。