我有一个单一的Python模块,其中包含3个类: A,A1和A2。从A.派生的A1和A2包含在A1和A2上操作的函数。
当它在一个.py文件中时,这一切都工作得很好。但是这个文件已经变得很长了,我想把A1和A2拆分成各自的文件。如何在没有循环依赖的情况下拆分此文件?
发布于 2011-10-18 04:50:16
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“处理”了A1s和A2s,你也应该没问题,因为多亏了鸭子类型,你不需要导入实际的名字。
发布于 2011-10-18 04:50:05
我如何在循环依赖的情况下拆分这个文件?
选项1:打破循环:将基类放在自己的模块中,将派生类放在其他模块中,将操作这些派生类的函数放在另一个模块中。
选项2:忽略周期,仅将模块/包导入全局命名空间,即IE:
foo.py
class Bar:
"Frobs Quuxen"不应该作为from foo import Bar导入,只需使用import foo并根据需要在函数中引用foo.Bar即可。
发布于 2011-10-18 04:47:29
我想你问题的核心是你不想
a.py to imports a1
if
a1.py imports a.然而,这在python中完全没问题。但是,一定要确保在具有多个模块的系统中,除了函数/类之外没有任何代码,因为它的运行顺序将根据您导入它的位置、导入的内容、月相等而有所不同。
https://stackoverflow.com/questions/7799286
复制相似问题