#-*-coding:utf8-*-#python2.7#xiaodengclassJsonDict(dict):def__getattr__(self,attr):try:returnself[attr]exceptKeyError:raiseAttributeError(r"'JsonDict'objecthasnoattribute...
# -*- coding: utf8 -*-
#python 2.7
#xiaodeng
class JsonDict(dict):
def __getattr__(self,attr):
try:
return self[attr]
except KeyError:
raise AttributeError(r"'JsonDict' object has no attribute '%s'" % attr)
#可以重写dict,使之通过“.”调用
def __setattr__(self,attr,value):
self[attr] = value
j=JsonDict(name='python',age='28')
print j.name
print j.age
问题:
1、以上是高人写的一段代码,self[attr]和self[attr] = value表示什么意思?按照输出来看是dict,可以理解为这样写就固定是一个dict结构么?
2、__getattr__和__setattr__怎么理解,始终没太明白,网上查资料也没查出一个非常透彻的说明(我大概理解他是一个内置的办法,通常在类中会用到,有点似懂非懂)
3、PS:我是自学python,没其他语言基础,有些地方理解有点慢,盼大神指点
j=JsonDict(name='python',age='28')
print j.name
print j.age
print j['age']
--这几个调用方法都没有报错,好像能当dict去用,似懂非懂。
展开