首页 新闻 搜索 专区 学院

python有关于setattr方法的问题

0
[待解决问题]

今天看到一个代码,关于创建一个类具有有dict功能的类,并且可以把key作成属性,输出value值。代码如下:

class My_dict(dict):
    def __init__(self,**kw):
        super().__init__(**kw)
    
    def __getattr__(self, key):
        try:
            return self[key]
        except KeyError:
            raise AttributeError("'Dict' object has no attribute '%s'" % key)
    
    def __setattr__(self,key,value):
        self[key]=value+5

A=My_dict(a=5,b=6)
print(A['a'])
print(A.b)
A.c=7
print(A['c'])
------------------------------------------
5
6
12

想知道print(A['c'])这一步的具体运作流程。我的想法是A.c由__getattr__方法返回A['c'],那照道理应该A['c']的值为7,但为何是12呢?倘若是运用了setattr函数,那它的vaule值是怎样读取,而且为何A['a'],A.b又不运用setattr函数呢?求大神打救本小白

Seiei的主页 Seiei | 菜鸟二级 | 园豆:202
提问于:2017-04-16 10:58
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册