鱼C论坛

 找回密码
 立即注册
查看: 4256|回复: 11

第50讲课后测试题第5题解决方法有问题

[复制链接]
发表于 2016-4-18 21:48:57 | 显示全部楼层 |阅读模式
3鱼币
以下是我a.py的内容:
  1. import b
  2. def x():
  3.           print('x')
复制代码

以下是b.py的内容:
  1. import a
  2. def y():
  3.           print('y')

  4. a.x()
复制代码

但是在执行b.py的时候,提示如下错误:
Traceback (most recent call last):
  File "C:\Python34\b.py", line 1, in <module>
    import a
  File "C:\Python34\a.py", line 1, in <module>
    import b
  File "C:\Python34\b.py", line 5, in <module>
    a.x()
AttributeError: 'module' object has no attribute 'x
这是为什么?

最佳答案

查看完整内容

有可能是答案错了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-18 21:48:58 | 显示全部楼层
安以陌 发表于 2016-4-20 11:08
恩,你说的这个方法确实可行,但是我看小甲鱼给的参考答案里是按照我上边的代码来做的,难道是参考答案给 ...

有可能是答案错了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-19 22:46:55 | 显示全部楼层
你把a.py里面 import b 去掉就没问题了
我查了一下资料,和一些自己的理解:
我觉得是因为两个文件不可以循环导入,这样会造成死循环,所以会报错

你还可以在参考一下这个帖子
http://blog.csdn.net/zy416548283/article/details/45061271
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-4-20 11:08:23 | 显示全部楼层
shuofxz 发表于 2016-4-19 22:46
你把a.py里面 import b 去掉就没问题了
我查了一下资料,和一些自己的理解:
我觉得是因为两个文件不可以 ...

恩,你说的这个方法确实可行,但是我看小甲鱼给的参考答案里是按照我上边的代码来做的,难道是参考答案给错了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-21 17:05:55 | 显示全部楼层
答案出错那就好尴尬了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-3 23:36:54 | 显示全部楼层
a文件importb没有引入对应的模块 pyc会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-8 16:29:57 | 显示全部楼层
多导入了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-7 10:58:47 | 显示全部楼层
导入a、b文件时需要把后缀名也一起加进去吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-13 10:32:52 | 显示全部楼层
shuofxz 发表于 2016-4-19 22:46
你把a.py里面 import b 去掉就没问题了
我查了一下资料,和一些自己的理解:
我觉得是因为两个文件不可以 ...

CSDN这个帖子的代码运行过,结果还是报错。(我用的是Win10, python3.6。里面Print的语法已经修改过。)
  1. print('---------this is module a.py----------')
  2. def a():
  3.     print("hello, a")
  4.     from b import b
  5.     b()

  6. a()

  7. print('----------this is module b.py----------')
  8. def b():
  9.     print("hello, b")

  10. def c():
  11.     from a import a
  12.     a()

  13. c()
复制代码


报错信息为:
  1. ======================== RESTART: F:\Python-Ex\aa.py ========================
  2. ---------this is module a.py----------
  3. hello, a
  4. Traceback (most recent call last):
  5.   File "F:\Python-Ex\aa.py", line 3237, in <module>
  6.     a()
  7.   File "F:\Python-Ex\aa.py", line 3234, in a
  8.     from b import b
  9. ImportError: cannot import name 'b'
  10. >>>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-13 10:33:41 | 显示全部楼层
我也觉得答案有问题,反正两个模块互相调用,就会出问题。
去掉任何一个调用就没事了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-10 16:36:54 | 显示全部楼层
如何 楼主?明白原因了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-10 16:38:03 | 显示全部楼层
@zltzlt 请教一下老师,这个原因是什么?这是小甲鱼课后题给出的答案 是错的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 21:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表