我有一个父类和一个子类,每个类都在自己的单独文件中。如果这两个类在一个文件中,我的 MWE 可以工作。如果我将它们分别拆分为单独的文件,我不知道如何相互导入。这是MWE:
cat test.py
#!/usr/bin/env python3
from main_win import MainWin
test = MainWin()
test.click()
cat main_win.py
#!/usr/bin/env python3
from sub_win import SubWin
class MainWin:
def __init__(self):
print('Created main window')
def click(self):
options = SubWin()
cat sub_win.py
#!/usr/bin/env python3
from main_win import MainWin
class SubWin(MainWin):
def __init__(self):
print('Created sub window')
如果我执行test.py并使用上面定义的循环导入,我会收到以下错误:
ImportError:无法从“main_win”(/home/basil/scratch/trash/pythonInheritance/p03/main_win.py)导入名称“MainWin”
编辑:有有效的评论质疑我的类结构:我需要继承吗?我可以添加一个超类,上面的两个类都可以继承吗?这些都是非常好的评论,我会仔细考虑。当然,在回答这些问题时,MWE 对您没有用处。现在,让我们假设类结构不会改变。那么如何解决这个问题呢?通过将两个模块合并为一个,还是有其他方法?