OOP - 组织大班

时间:2015-04-26 05:59:31

标签: python class oop

我开始为某些数学领域编写 big python库。

所以我有这个代表数学模型的数据结构(在A类中定义)。

我有一堆较小的功能,我把它放在A:

A.f(),A.g(),...

计算更重要的函数A.X(),A.Y(),......最终用户感兴趣的是或多或少的“辅助函数”。

所有这些功能当然都取决于A中的数据。

但是A中的方法数量正在增长并且不断增长并且变得令人困惑。如何将这样一个类分成更小的部分。 可以说,具有基本操作的数据结构和对结构进行计算的“方法”?

通常的方法和最pythonic的方法是什么?

2 个答案:

答案 0 :(得分:4)

您可以使用纯函数方法并移动类用户不应在对象实例上调用的方法来分隔文件。

在纯函数方法中,函数不依赖于任何内部状态,没有副作用,仅根据提供的参数计算返回值。

举例说明将取代以下内容:

# shape.py
class Shape:

    def __init__(self, x, y):
        self.x = x
        self.y = y

    def area(self):
        return self.x * self.y

使用:

# shape.py
class Shape:

    def __init__(self, x, y):
        self.x = x
        self.y = y

# func.py
def area(shape):
    return shape.x * shape.y

当然,将area类的Shape方法提取到另一个文件中的单独函数中可能不是一个好主意,但您绝对可以将所有“辅助函数”移动到单独的文件中并从类方法中正确调用它们。

这也将大大简化辅助函数测试。

答案 1 :(得分:0)

前缀是#private; private"或者不是具有单下划线或双下划线的类的公共接口的辅助方法。

例如,当在类上调用_my_helper时,不显示像help这样的方法。

this post中提供了更多详细信息。