python - 如何正确组织类方法的 "helper"方法

标签 python class oop methods code-organization

我有一个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. 从方法 1 开始
  2. 如果与辅助方法相结合的主方法变得太大(> 20-30 loc,或任何对您来说合理的范围),或不可读 - 使其成为类方法,如您在方法 #2 中所述<
  3. 如果辅助方法对于类中的多个函数变得通用 - 再次将其设为类方法
  4. 如果辅助方法对于模块中的多个类变得通用 - 将其放在单独的文件中

关于python - 如何正确组织类方法的 "helper"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62801486/

相关文章:

C# 类中的异常处理

javascript - 选择具有一个类而不是其他类的项目 jquery javascript

java - 采访 : Is it possible to create a class without name?

javascript - 如何从 JavaScript 的公共(public)方法中访问私有(private)属性?

c++ - 基类有不完整的类型错误

python - 无法通过pyrebase从firebase下载文件

Python 在 Popen 中传递管道 '|' 参数

design-patterns - 控制反转是否特定于 OO 语言?

python - 如何在 Python 中创建假文本文件

javascript - Python 到 JavaScript unix 时间转换