Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 面向对象-组织大型课程_Python_Class_Oop - Fatal编程技术网

Python 面向对象-组织大型课程

Python 面向对象-组织大型课程,python,class,oop,Python,Class,Oop,我开始为一些数学领域编写一个大型python库 所以我有这个数据结构(在类A中定义),它代表一个数学模型 我有一堆较小的函数,我把它们放在一个 A.f(),A.g() 计算更重要的函数A.X()、A.Y()、A.X()时,或多或少需要哪些“辅助函数”,。。。最终用户感兴趣的 当然,所有这些函数都依赖于A中的数据 但是,一个应用程序中的方法数量在不断增加,而且越来越令人困惑。如何将这样一个类分割成更小的部分。 比如说,包含基本操作的数据结构,以及对该结构进行计算的“方法” 什么是通常的方法和最具p

我开始为一些数学领域编写一个大型python库

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

我有一堆较小的函数,我把它们放在一个

A.f(),A.g()

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

当然,所有这些函数都依赖于A中的数据

但是,一个应用程序中的方法数量在不断增加,而且越来越令人困惑。如何将这样一个类分割成更小的部分。 比如说,包含基本操作的数据结构,以及对该结构进行计算的“方法”


什么是通常的方法和最具python风格的方法?

您可以使用纯函数方法和move方法,类用户不应该调用对象实例来分离文件

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

举例说明如下所示:

# shape.py
class Shape:

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

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

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


这也将极大地简化助手函数测试。

通常使用单下划线或双下划线作为“private”或helper方法的前缀,这些方法不是类的公共接口的一部分

一个影响是,例如,在类上调用
help
时,不会显示像
\u my\u helper
这样的方法


更多详细信息请参见。

尝试将数据结构分解为更小的对象,方法如下。另外,请查看PEP 8中的指南,并导入此。看起来您编写的类不是实际的类型-不要这样做。如果您有一个更具体的示例,可能会有所帮助
# 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