请教一下:如果在类里面创建一个字典 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回答

张小新utopia

2018-07-13

两种方法修改

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'])
1
5
慕移动1501610
明白了,谢谢
2018-07-14
共5条回复

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14446 学习 · 4438 问题

查看课程