我有一个Python类,它有几个“主要”方法,这些方法连续修改它的属性之一,例如
def method1(self):
# modify an attribute of self
return self
def method2(self):
# modify the same attribute of self
return self
每个核心方法依次调用多个“帮助器”类方法,这些方法也修改相同的属性,即
def method1(self):
self = self.helper_method1().helper_method2()
return self
def method2(self):
self = self.helper_method3().helper_method4()
return self
对于这些“帮助器”方法应该在类中的何处(在什么级别)定义,是否存在共识?
即是这样的:
def helper_method1_to_be_called_by_method1(self):
# modify at attribute of self
return self
def helper_method2_to_be_called_by_method1(self):
# modify at attribute of self
return self
def method1(self):
self = self.helper_method1().helper_method2()
return self
优于此(反之亦然):
def method1(self):
def helper_method1_to_be_called_by_method1(self):
# modify at attribute of self
return self
def helper_method2_to_be_called_by_method1(self):
# modify at attribute of self
return self
self = self.helper_method1().helper_method2()
return self
或者是否有第三种策略在性能、易读性和维护方面效果最好?
最佳答案
问题是你永远不知道你的设计应该有多灵活。一种极端的情况是嵌套每个相关的辅助方法(您的方法#2)。另一个边缘情况是将每个帮助器方法放在单独的文件(模块)中,并将其命名为“method1_helper_utils.py”。除非您事先知道确切的软件设计,否则我建议这样做:
- 从方法 1 开始
- 如果与辅助方法相结合的主方法变得太大(> 20-30 loc,或任何对您来说合理的范围),或不可读 - 使其成为类方法,如您在方法 #2 中所述<
- 如果辅助方法对于类中的多个函数变得通用 - 再次将其设为类方法
- 如果辅助方法对于模块中的多个类变得通用 - 将其放在单独的文件中
关于python - 如何正确组织类方法的 "helper"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62801486/