gpt4 book ai didi

具有继承性的 Python 循环导入

转载 作者:行者123 更新时间:2023-12-05 03:12:02 25 4
gpt4 key购买 nike

我有一个父类和子类,其中父类的方法返回子类的一个实例。这两个类位于单独的文件 classA.pyclassB.py 中。为了在导入 classA 时避免循环导入,我将 classB 导入添加到 classA.py 的末尾(如下所示)。一切正常,我能够在我的代码中正确使用 classA

现在,如果我只想使用 classB,就会遇到问题。例如,如果我运行

from classB import ClassB

我收到以下错误:

File "classA.py", line 269, in <module>
from classB import ClassB
ImportError: cannot import name ClassB

如果我运行:

from classA import ClassA
from classB import ClassB

然后一切正常,我可以使用这两个类。有没有办法只导入 classB 或者我必须先导入 classA 然后再导入 classB

A类.py

class ClassA():
def __init__(self, ...):
....

def someMethod(self, ...):
...
return ClassB(...)

from classB import ClassB

B类.py

from classA import ClassA

class ClassB(ClassA):
def __init__(self, ...):
super(ClassB, self).__init__(...)

最佳答案

显而易见的解决方案是将两个类放入同一个文件(相同的模块)。它们紧密相关,因此非常合理,不需要“黑客”(将导入放在文件末尾)和解决方法(导入的特殊顺序)。

同时检查这些来源:How many Python classes should I put in one file? , Is it considered Pythonic to have multiple classes defined in the same file? .

关于具有继承性的 Python 循环导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35179480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com