鱼C论坛

 找回密码
 立即注册
查看: 21257|回复: 4

两个.py之间类的相互调用问题

[复制链接]
发表于 2015-5-3 23:16:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在a.py里面实例化了一个类  
import b
value  = 1
if __name__ == '__main__':
class newclass(object):
  def set(self):
   value = 6
Aclass = newclass()
Aclass.set()
print b.add()

在b中想要获得这个value的值并且加一
import a
def add():
a.value=a.value+1
return a.value

怎样才能让输出的结果是7而不是2?

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-5-4 22:32:50 | 显示全部楼层
楼主在两个文件中相互import这种行为在python中是应当避免的,具体请看这个贴子的3楼和4楼~http://bbs.fishc.com/forum.php?m ... p;page=1#pid2337627

评分

参与人数 1荣誉 +5 鱼币 +6 收起 理由
~风介~ + 5 + 6 感谢楼主无私奉献!:)

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-4 14:10:01 | 显示全部楼层
本帖最后由 lightninng 于 2015-5-4 23:35 编辑

楼主,你这个问题涉及到的方面比较多,不仅仅是模块调用和类相关的一些问题,给人的感觉是,自己想出来的一个方法,想验证怎么能得到正确的答案,
建议把你要解决问题的本身详细的说一下,这样别人好对症下药
说一下几个问题吧,
首先,你想在一个模块中调用自己写的另一个模块,必须放下系统的PATH变量所包含的路径下,否则直接 import 模块名;这种调用方法将会报错,找不到模块名,当然也有别的解决方法见这个贴子http://bbs.fishc.com/thread-59410-2-1.html,28楼os模块的介绍
再者,在将b模块导入a中之后,相当于你导入了一些函数,那么你在用b.add()调用b模块中的add函数中的时候,我遇到的实际情况是会报错:'module' object has no attribute 'add',我考虑可能是add()函数找不到a模块所导致的,将import a这条语句放在add函数中,得到了楼主所需要的答案,在打印值的时候遇到了一个问题,我在坛子里发贴问问~
最后,想在函数中修改一个函数外定义的变量,应该在函数体的最开始将该变量声明为全局变量,在这个问题里就是在类中set()方法的最开始加上一条语句 :global value

另外 ,楼主要定义类的时候最好写成这样的形式NewClass(这是PEP 8的标准),类的实例最好命名成这个样子a_class(同上)


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-5 10:16:28 | 显示全部楼层
lightninng 发表于 2015-5-4 14:10
楼主,你这个问题涉及到的方面比较多,不仅仅是模块调用和类相关的一些问题,给人的感觉是,自己想出来的一 ...

太感谢你了,我的程序有点长,而且也是刚开始学,写得很乱,不太好读。我再学习一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-5 12:09:24 | 显示全部楼层
本帖最后由 lightninng 于 2015-5-5 20:38 编辑
tommycxd 发表于 2015-5-5 10:16
太感谢你了,我的程序有点长,而且也是刚开始学,写得很乱,不太好读。我再学习一下

建议针对一个个实际的问题为线索进行学习(最好是教程中的某个问题,因为它们会根据所学章节的内容设计相应的问题),在写代码之前先想好要解决的问题是怎样的,这样在遇到问题自己无法解决的时候,把你要解决的问题和你卡在哪 一步无法继续,描述清楚,这样会有更多的人回答你的问题,你学习起来也会更加的有效率~
加油~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-21 14:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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