![](/img/trans.png)
[英]How to properly organize a Python class definition with respect to helper files for that class?
[英]How to properly organize “helper” methods for a class method
我有一个 Python class 有几个“主要”方法,它们依次修改其属性之一,例如
def method1(self):
# modify an attribute of self
return self
def method2(self):
# modify the same attribute of self
return self
这些核心方法中的每一个依次调用多个“帮助器”class 方法,这些方法也修改相同的属性,即
def method1(self):
self = self.helper_method1().helper_method2()
return self
def method2(self):
self = self.helper_method3().helper_method4()
return self
对于应该在 class 中的何处(在什么级别)定义这些“帮助”方法是否有共识?
即是这样的:
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”。 除非您事先知道确切的软件设计,否则我建议您这样做:
嵌套的 function 可以访问其外部函数 scope 中的变量。 也就是所谓的function closure
。 我相信,如果这不是您需要的,那么在这种情况下可能不需要嵌套的 function 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.