python如何引用其他模块中类的方法中的变量?
例如:#A.pyClassa()deffun()tmp='123'#B.pyClassb()deffun1()printtmp-----这一步如何实现?本人菜鸟,希望大神...
例如:
#A.py
Class a()
def fun()
tmp='123'
#B.py
Class b()
def fun1()
print tmp ----- 这一步如何实现?
本人菜鸟,希望大神不吝赐教。。。
其中fun 和 fun1都是类的方法,不是函数。在之前我省略了,没有写上“def __init__”这个构造函数。 展开
#A.py
Class a()
def fun()
tmp='123'
#B.py
Class b()
def fun1()
print tmp ----- 这一步如何实现?
本人菜鸟,希望大神不吝赐教。。。
其中fun 和 fun1都是类的方法,不是函数。在之前我省略了,没有写上“def __init__”这个构造函数。 展开
4个回答
展开全部
没法实现。
原因:
你的tmp,只是class a中的一个函数fun内的临时变量
所以无法直接被外部调用。
并且只有fun函数执行时才存在,函数结束时,就不存在了。
关于变量的作用范围,你可以参考:
【整理】Python中变量的作用域(variable scope)
想要可以被调用,可以试试:
改为:
#A.py
Class a()
tmp='123'
def fun()
。。。。。。
然后再去:
import A
print A.tmp
注意:
此时,tmp就是class a中的全局变量了。
原因:
你的tmp,只是class a中的一个函数fun内的临时变量
所以无法直接被外部调用。
并且只有fun函数执行时才存在,函数结束时,就不存在了。
关于变量的作用范围,你可以参考:
【整理】Python中变量的作用域(variable scope)
想要可以被调用,可以试试:
改为:
#A.py
Class a()
tmp='123'
def fun()
。。。。。。
然后再去:
import A
print A.tmp
注意:
此时,tmp就是class a中的全局变量了。
追问
大神。
我之前就怀疑是不是无法实现了。其实源code中的tmp是个变量,并不是'123',所以更不可能实现了。
不过在tmp之前定义为globa tmp,也能够在A.py中其他函数中调用的。
唉。。我真是悲剧。
追答
函数内部的局部变量,就是无法被外界调用的。
当然,将所要保存的值,通过全局变量的方式保存起来。也是可以实现所需要获得的值的。
然后外界就可以通过全局变量获得该值了。
展开全部
你的原始代码有若干语法错误,现已帮你修正并做好注释,参考下列代码:
# -*- coding: cp936 -*-
#A.py
class a(): #后面要有冒号
tmp='123' #直接在a类里定义tmp变量,不用写方法
# -*- coding: cp936 -*-
#B.py
import A #导入A模块
class b(): #后面要有冒号
def fun1(self): #类方法要有一个默认self参数
print A.a.tmp #输出A模块中a类的tmp值
tb=b() #需要把b类实例化,才可以使用里面的fun1方法
tb.fun1() #直接输出tmp值
A.a.tmp='321' #修改tmp的值
tb.fun1() #看到tmp值已被修改
input('完成,按任意键退出')
以上代码在python2.6环境测试通过
希望对你有所帮助~
# -*- coding: cp936 -*-
#A.py
class a(): #后面要有冒号
tmp='123' #直接在a类里定义tmp变量,不用写方法
# -*- coding: cp936 -*-
#B.py
import A #导入A模块
class b(): #后面要有冒号
def fun1(self): #类方法要有一个默认self参数
print A.a.tmp #输出A模块中a类的tmp值
tb=b() #需要把b类实例化,才可以使用里面的fun1方法
tb.fun1() #直接输出tmp值
A.a.tmp='321' #修改tmp的值
tb.fun1() #看到tmp值已被修改
input('完成,按任意键退出')
以上代码在python2.6环境测试通过
希望对你有所帮助~
追问
您的回答也很精彩。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(1)方法1
import 模块
模块.变量名
(2)方法2
from 模块 import 变量名
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import xx 然后就可以通过xx.yy来使用,如xx.yy='abc' 进行修改
更多追问追答
追问
那我可以这样?
import A
print A.tmp
貌似不行吧
追答
#A.py
tmp = 'dsadsd'
#B.py
from A import tmp
print tmp
这样吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询