请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请教一下:如果在类里面创建一个字典 dic = {" a" : ("A" , 1)," b" : ("B" , 2)} 在外面怎么调用这个字典呢

class Dic():

    def__init__(self):

    global dic

    dic = {" a" : ("A" , 1)," b" : ("B" , 2)}

a = Dic()   #怎么调用字典  喵喵喵

正在回答

插入代码

1回答

张小新utopia 2018-07-13 09:27:57

两种方法修改

1.删掉 global那一行

1
2
3
4
5
6
7
8
9
10
11
12
#无参构造函数不需要写,默认就有一个无参的
#不能用global声明类变量和实例变量,只能用于指定全局变量
#(只是通过测试得出的结论,还没有研究具体原因)
#怎么指定全局变量,祥见方法2
#虽然可以,但最好不要用什么时候都使用"号,尽量使用'
class Dic():    
    dic = {"a" : ("A" 1)," b" : ("B" 2)}    
= Dic()
#这里必须使用单引号
print(a.dic['a'])
#或者不实例化,去掉a = Dic(),直接打印类变量也可以
print(Dic.dic['a'])
1
2
('A'1)
这是打印结果,系统自动把你的"改成'号了,python没有char和string之分,所有还是改改习惯吧

2.加两个缩进,再加一个模块变量

(global的用法)必须添加一个模块变量,但是这里的作用是,指明模块变量,如果不加global,类或方法里的同名变量会被识别为一个全新的变量,无法用这种同名变量修改模块变量,所以要用global指明

1
2
3
4
5
6
7
dic = {}
class Dic():
    def __init__(self):
        global dic
        dic = {'a ': ('A' 1),' b' : ('B' 2)}
= Dic()
print(dic['a'])

下面这种也可以, 连实例化都不需要

1
2
3
4
5
dic = {}
class Dic():
    global dic
    dic = {'a ': ('A' 1),' b' : ('B' 2)}
print(dic['a'])
1 回复 有任何疑惑可以回复我~
  • 提问者 慕移动1501610 #1
    我这里 如果global dic =…………会直接报错,然后a=Dic()后,也不能打印a.dic['a']
    回复 有任何疑惑可以回复我~ 2018-07-13 10:40:32
  • 张小新utopia 回复 提问者 慕移动1501610 #2
    是我搞错了,又试了一下,
    元代码的根本问题是,不能在类里用global给变量声明
    回复 有任何疑惑可以回复我~ 2018-07-14 00:03:48
  • 张小新utopia 回复 提问者 慕移动1501610 #3
    而且global
    不能写成
    global c = ......
    要写成 
    global c
    c=........
    是我搞错了,sorry
    回复 有任何疑惑可以回复我~ 2018-07-14 00:20:23
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信