如何将 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 [重复]

在 Python 中,如何将字符串拆分为多个整数?

根据行值python将大型csv文件拆分为多个文件

有啥方法可以将大约 16GB 的 SAS 文件拆分为 Python 中的多个文件/数据帧?

如何快速将字典拆分为多个字典