首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将一个Python模块拆分成多个文件?

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

Stack Overflow用户
提问于 2011-10-18 04:38:16
回答 3查看 14.1K关注 0票数 17

我有一个单一的Python模块,其中包含3个类: A,A1和A2。从A.派生的A1和A2包含在A1和A2上操作的函数。

当它在一个.py文件中时,这一切都工作得很好。但是这个文件已经变得很长了,我想把A1和A2拆分成各自的文件。如何在没有循环依赖的情况下拆分此文件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-18 04:50:16

modA.py:

代码语言:javascript
复制
class A(...):
   ...

modA1.py:

代码语言:javascript
复制
import modA
class A1(modA.A):
   ...

modA2.py:

代码语言:javascript
复制
import modA
class A2(modA.A):
   ...

modfull:

代码语言:javascript
复制
from modA import A
from modA1 import A1
from modA2 import A2

即使A“处理”了A1s和A2s,你也应该没问题,因为多亏了鸭子类型,你不需要导入实际的名字。

票数 12
EN

Stack Overflow用户

发布于 2011-10-18 04:50:05

我如何在循环依赖的情况下拆分这个文件?

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

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

foo.py

代码语言:javascript
复制
class Bar:
    "Frobs Quuxen"

不应该作为from foo import Bar导入,只需使用import foo并根据需要在函数中引用foo.Bar即可。

票数 2
EN

Stack Overflow用户

发布于 2011-10-18 04:47:29

我想你问题的核心是你不想

代码语言:javascript
复制
a.py to imports a1
if
a1.py imports a.

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7799286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档