gpt4 book ai didi

python - 不同模块中的继承

转载 作者:太空宇宙 更新时间:2023-11-04 04:29:55 24 4
gpt4 key购买 nike

我有一个父类和一个子类,每个类都在自己单独的文件中。如果这两个类在一个文件中,我的 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: cannot import name 'MainWin' from 'main_win' (/home/basil/scratch/trash/pythonInheritance/p03/main_win.py)

编辑:有有效的评论质疑我的类结构:我需要继承吗?我可以添加一个父类(super class),上面的两个类都可以从中继承吗?这些都是很好的意见,我会仔细考虑的。当然,MWE对你权衡没有用 在回答这些问题时。现在,让我们假设类结构不会改变。那么如何解决这个问题呢?将两个模块合二为一,还是有别的办法?

最佳答案

你有一个循环导入。 main_win.py 导入 sub_win.py 导入 main_win.py...

要解决此问题并保持代码不变,您可以从技术上将 from sub_win import SubWin 移动到 MainWin.click() 中。不过,这绝对不是我的建议,您可能应该回去设计并重新考虑这种方法,无论您试图实现什么。

关于python - 不同模块中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52865899/

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