Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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_Oop - Fatal编程技术网

Python分解大型类结构的最佳方法:常量和导入

Python分解大型类结构的最佳方法:常量和导入,python,oop,Python,Oop,我有一个非常大的文件,其中包含多个类,我想把它们分开,每个类都有自己的文件。我还有一个与这些类接口的文件: package/ interface.py classALL.py 最后我想要的是: package/ interface.py classes/ classA.py classB.py classC.py B类和C类继承自A类。实现这一点的最佳实践是什么?具体而言: 在哪里导入库?既然B类是a类,我可以导

我有一个非常大的文件,其中包含多个类,我想把它们分开,每个类都有自己的文件。我还有一个与这些类接口的文件:

package/
    interface.py
    classALL.py
最后我想要的是:

package/
    interface.py
    classes/
        classA.py
        classB.py
        classC.py
B类和C类继承自A类。实现这一点的最佳实践是什么?具体而言:

  • 在哪里导入库?既然B类是a类,我可以导入a类中的所有内容吗
  • 如果我在每个类中都需要类似re的东西,我是否需要在每个类中导入它?这会给我同一个库的多个实例吗
  • 我应该把常数放在哪里?我可以在类A中定义常量A并使用它吗,还是需要在每个文件中定义它
    您可以给每个类一个文件,然后将它们全部添加到一个包中

    例如,您有
    a.py
    b.py
    c.py
    ,每个类分别包含
    a
    b
    c
    。通过将文件
    a.py
    b.py
    c.py
    移动到单个文件夹中,
    abcp
    并创建一个
    \u init\u.py
    文件,可以将所有这些类打包到单个包中

    \uuuu init\uuuuu.py
    文件可能包含以下内容

    from .a import A
    from .b import B
    from .c import C
    
    import abcp
    
    if __name__ == '__main__':
        oa = abc.A()
    
    这样就可以直接从包中访问类

    例如,在
    main.py
    中,可以执行以下操作

    from .a import A
    from .b import B
    from .c import C
    
    import abcp
    
    if __name__ == '__main__':
        oa = abc.A()
    

    尽管一个包含大量类的大型模块可能会变得笨拙,但没有充分的理由走极端,尝试在每个模块中强制一个类(即,不要尝试用python编写java)。更好的方法是根据应用程序中的基本职责,将许多类合理地分组到几个模块中。如果您提供实际的代码(而且它是有效的),这可能更适合@wim我的老板让我这样做:),但我同意这些模块可以而且应该被分解。