今天看到一个代码,关于创建一个类具有有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函数呢?求大神打救本小白