如何将Python模块拆分为多个文件?

如何将Python模块拆分为多个文件?,python,python-module,Python,Python Module,我有一个Python模块,它包含3个类:a、A1和A2。 A1和A2源于A。A包含在A1和A2上运行的函数 当它位于一个.py文件中时,所有这些都可以正常工作。但是这个文件已经很长了,我想把A1和A2分成它们自己的文件。尽管存在循环依赖关系,但如何拆分此文件?我认为您问题的核心是您不希望 a.py to imports a1 if a1.py imports a. 然而,在python中这是完全正确的。但是,一定要确保在一个具有多个模块的系统中,没有函数/类之外的任何代码,因为运行的顺序会根据

我有一个Python模块,它包含3个类:a、A1和A2。 A1和A2源于A。A包含在A1和A2上运行的函数


当它位于一个.py文件中时,所有这些都可以正常工作。但是这个文件已经很长了,我想把A1和A2分成它们自己的文件。尽管存在循环依赖关系,但如何拆分此文件?

我认为您问题的核心是您不希望

a.py to imports a1
if
a1.py imports a.
然而,在python中这是完全正确的。但是,一定要确保在一个具有多个模块的系统中,没有函数/类之外的任何代码,因为运行的顺序会根据您导入的位置、导入的内容、月亮的相位等而有所不同

尽管存在循环依赖关系,如何拆分此文件

选项1:打破循环:将基类放在自己的模块中,将派生类放在其他模块中,并将函数操作在另一个模块中的这些派生类上


选项2:忽略周期,仅将模块/包导入全局命名空间,即:

福比 决不能作为
从foo导入栏导入
,只需使用
import foo
,并根据需要在函数中参考
foo.Bar

modA.py:

class A(...):
   ...
modA1.py:

import modA
class A1(modA.A):
   ...
modA2.py:

import modA
class A2(modA.A):
   ...
modfull:

from modA import A
from modA1 import A1
from modA2 import A2
即使一个“处理”A1s和A2s,你也应该没问题,因为由于duck类型,你不需要导入实际的名称。

这个怎么样,有什么帮助吗??
from modA import A
from modA1 import A1
from modA2 import A2