我有一个父类和子类,父类的方法返回子实例。这两个类都位于单独的文件classA.py
和classB.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
?
classA.py
class ClassA():
def __init__(self, ...):
....
def someMethod(self, ...):
...
return ClassB(...)
from classB import ClassB
classB.py
from classA import ClassA
class ClassB(ClassA):
def __init__(self, ...):
super(ClassB, self).__init__(...)
答案 0 :(得分:1)
显而易见的解决方案是将两个类放在同一个文件中(相同的module
)。
它们紧密相关,因此它非常有意义,并且不需要“黑客”(将导入放在文件末尾)和变通方法(特殊的导入顺序)。
还请检查以下来源:How many Python classes should I put in one file?,Is it considered Pythonic to have multiple classes defined in the same file?。