如何优化Python代码:调用greet时自动执行hello并遵循DRY原则
消除重复代码的解决方案
直接用模板方法模式就能搞定,核心思路是把所有子类都要执行的通用逻辑(调用hello())抽到父类Base里,子类只需要实现各自独有的问候内容就行,完美符合DRY原则:
修改后的代码如下:
class Base: def hello(self): print('hello') def greet(self): # 父类统一处理固定流程:先打招呼 self.hello() # 交给子类实现具体的问候语 self._greet_message() class A(Base): def _greet_message(self): print('how are you?') class B(Base): def _greet_message(self): print('how are you doing?')
说明
- 现在调用
A()或B()实例的greet()方法时,会自动先执行Base里的hello(),再执行子类的专属问候内容,完全去掉了重复的self.hello()代码。 - 父类的
greet()作为模板方法,固定了执行流程,子类只需要专注实现自己的差异化逻辑,后续新增子类也只需要实现_greet_message()即可,维护性更强。
内容的提问来源于stack exchange,提问作者Zhong PengQun
相关产品推荐
相关产品推荐

