如何将 Python 模块拆分为多个文件?
Posted
技术标签:
【中文标题】如何将 Python 模块拆分为多个文件?【英文标题】:How to split a Python module into multiple files? 【发布时间】:2011-12-09 14:26:06 【问题描述】:我有一个 Python 模块,其中包含 3 个类:A、A1 和 A2。 A1 和 A2 派生自 A。A 包含对 A1 和 A2 进行操作的函数。
当它在一个 .py 文件中时,这一切都可以正常工作。但是该文件已经变得很长,我想将 A1 和 A2 拆分为它们自己的文件。尽管存在循环依赖,如何拆分此文件?
【问题讨论】:
这个怎么样,有什么帮助吗?? ***.com/questions/19353990/… 【参考方案1】:modA.py:
class A(...):
...
modA1.py:
import modA
class A1(modA.A):
...
modA2.py:
import modA
class A2(modA.A):
...
模组:
from modA import A
from modA1 import A1
from modA2 import A2
即使 A “处理” A1s 和 A2s 你应该没问题,因为由于使用了鸭子类型,你不需要导入实际名称。
【讨论】:
【参考方案2】:尽管存在循环依赖,我如何拆分此文件?
选项 1:打破循环:将基类放在自己的模块中,将派生类放在附加模块中,将在这些派生类上运行的函数放在另一个模块中。
选项 2:忽略循环,仅将模块/包导入全局命名空间,IE:
foo.py
class Bar:
"Frobs Quuxen"
永远不应导入为from foo import Bar
,只需使用import foo
并根据需要在函数中引用foo.Bar
。
【讨论】:
【参考方案3】:我认为你问题的核心是你不想要
a.py to imports a1
if
a1.py imports a.
但是,这在 python 中完全没问题。但是,请确保您在具有多个模块的系统中没有函数/类之外的任何代码,因为运行的顺序将根据您导入它的位置、导入的内容、月相而有所不同等。
【讨论】:
以上是关于如何将 Python 模块拆分为多个文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用python将长音频(EX:1小时)文件拆分为多个短长度(5s)音频文件
如何通过拆分其中的字符串将单个列拆分为多个。 -Pandas Python [重复]