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

时间:2011-10-17 20:38:16

标签: python python-module

我有一个包含3个类的Python模块:A,A1和A2。 A1和A2来自A. A包含在A1和A2上运行的函数。

当它在一个.py文件中时,一切正常。但是该文件已经增长了很长时间,我想将A1和A2分成自己的文件。尽管存在循环依赖,我怎么能拆分这个文件?

3 个答案:

答案 0 :(得分:11)

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

即使A“处理”A1和A2你应该没问题,因为鸭子打字你不需要输入实际的名字。

答案 1 :(得分:2)

  

如果循环依赖,我怎么能拆分这个文件?

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


选项2:忽略循环,仅将模块/包导入全局命名空间,IE:

foo.py

class Bar:
    "Frobs Quuxen"

永远不能导入为from foo import Bar,只需使用import foo并根据需要在函数中引用foo.Bar

答案 2 :(得分:0)

我认为你问题的核心是你不想要

a.py to imports a1
if
a1.py imports a.

然而,这在python中完全没问题。但是,确保在具有多个模块的系统中没有函数/类之外的任何代码,因为运行的顺序将根据导入的位置,导入的内容,月亮的相位而有所不同等等。