python的getattr和setattr_python __getattr__和__setattr__应该怎么理解

#-*-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去用,似懂非懂。

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值