Python 在import时明明写的正确,却提示错误AttributeError: module 'test003' has no attribute 'desc'

在自己写一个小项目的时候,发现明明自己使用import引入自己项目中的另一个Python文件是正确的写法,在运行的时候却发现总是提示错误。因为笔者本人也是学习Python不久,经过一个小时的琢磨,感觉应该是两个文件循环引用导致错误。比如a.py中有a.tt()和a.uu()两个方法;b.py中有b.xx()和b.yy()两个方法。a.py在使用的时候需要引用b.py()中b.xx的方法,然后在b.py使用的时候需要引入a.py中a.tt()的一个方法。所以在a.py中需要import b,同时在b.py中需要import a。因此自己写了一个小的案例,经过测试确实是循环引用造成冲突所致

在test002.py中写

在test003.py中写

然后随便执行test002或者test003提示

解决办法:

1.即把import语句写在方法或函数里面,将它的作用域限制在局部。这种方法的缺点就是会有性能问题。

2.将from xxx import yyy改成import xxx;xxx.yyy来访问的形式

3.出现循环import的问题往往意味着代码的布局有问题。可以合并或者分离竞争资源。合并的话就是都写到一个文件里面去。分离的话就是把需要import的资源提取到一个第三方文件去。总之就是将循环变成单向。
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值