python 两模块互相引用的问题
答案:3 悬赏:80 手机版
解决时间 2021-11-26 00:39
- 提问者网友:半生酒醒
- 2021-11-25 06:26
python 两模块互相引用的问题
最佳答案
- 五星知识达人网友:平生事
- 2021-11-25 08:01
如果你执行father的话,这个时候father是__main__,不是module,所以会执行到father的from son import *,这个时候python会去执行son.py,而son.py一开始就是from father import *,所以python又去执行father.py,因为father.py的一开始是from son import *,并且因为之前执行过了,所以这个时候son已经在sys.modules里面,所以python不会重新执行son.py,而只是把sys.modules里面的son返回给你,所以当执行到father.py的print(x)的时候,还没有执行son.py里面的x=6,所以会有找不到x的attribute error。
解决的办法就是最好根本不要有circular import。追问那怎么持有对方的引用? 比如一个坦克和一个战场,坦克要在战场里画图,战场要在里面生成坦克,都要有对方的引用才知道一些重要的属性追答如果你有一个module专门管画图,那么你就在这个module里import坦克和战场的module就好了。
解决的办法就是最好根本不要有circular import。追问那怎么持有对方的引用? 比如一个坦克和一个战场,坦克要在战场里画图,战场要在里面生成坦克,都要有对方的引用才知道一些重要的属性追答如果你有一个module专门管画图,那么你就在这个module里import坦克和战场的module就好了。
全部回答
- 1楼网友:从此江山别
- 2021-11-25 09:48
from father import*是引用father里面的方法,你在father里面定义有函数吗?
直接 import father试试
直接 import father试试
- 2楼网友:封刀令
- 2021-11-25 08:16
问题在于这样的设计不合理,当然也不能通过;你既然father里要用son的东西,son里又要用father的东西,为什么不用继承呢?或者你把要互相引用的东西设为全局,这样比较危险
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯