请教一下:如果在类里面创建一个字典 dic = {" a" : ("A" , 1)," b" : ("B" , 2)} 在外面怎么调用这个字典呢
来源:9-9 在实例方法中访问实例变量与类变量
慕移动1501610
2018-07-12
class Dic():
def__init__(self):
global dic
dic = {" a" : ("A" , 1)," b" : ("B" , 2)}
a = Dic() #怎么调用字典 喵喵喵
写回答
1回答
-
两种方法修改
1.删掉 global那一行
#无参构造函数不需要写,默认就有一个无参的 #不能用global声明类变量和实例变量,只能用于指定全局变量 #(只是通过测试得出的结论,还没有研究具体原因) #怎么指定全局变量,祥见方法2 #虽然可以,但最好不要用什么时候都使用"号,尽量使用' class Dic(): dic = {"a" : ("A" , 1)," b" : ("B" , 2)} a = Dic() #这里必须使用单引号 print(a.dic['a']) #或者不实例化,去掉a = Dic(),直接打印类变量也可以 print(Dic.dic['a'])
('A', 1) 这是打印结果,系统自动把你的"改成'号了,python没有char和string之分,所有还是改改习惯吧
2.加两个缩进,再加一个模块变量
(global的用法)必须添加一个模块变量,但是这里的作用是,指明模块变量,如果不加global,类或方法里的同名变量会被识别为一个全新的变量,无法用这种同名变量修改模块变量,所以要用global指明
dic = {} class Dic(): def __init__(self): global dic dic = {'a ': ('A' , 1),' b' : ('B' , 2)} a = Dic() print(dic['a'])
下面这种也可以, 连实例化都不需要
dic = {} class Dic(): global dic dic = {'a ': ('A' , 1),' b' : ('B' , 2)} print(dic['a'])
152018-07-14
相似问题