__getattr__:当使用点号获取实例属性时,如果属性不存在就自动调用__getattr__方法。
__setattr__:当设置类实例属性时自动调用,如j.name=5 就会调用__setattr__方法 。
self.[name]=5因为这个类是从dict继承来的,是dict的子类所以 self[attr]=value 相当于调用dict的下标方法与 a={} ; a[attr]=value意思一样。

案例:

class Dict(dict):def __getattr__(self, key):try:return self[key]except KeyError:raise AttributeError(r"'Dict' object has no attribute '%s'" % key)def __setattr__(self, key, value):self[key] = valued = Dict(a=1, b=2)
print (d['a'])
print (d.a) #调用类中原本没有定义的属性时候,调用__getattr__
d.a = 100 #对实例的属性进行赋值的时候调用__setattr__
print (d['a'])

运行结果:

1
1
100

python __getattr__和__setattr__相关推荐

  1. Python __getattr__和__setattr__方法介绍

    __getattr__是类在调用属性时,如果没有该属性会自动调用的魔法方法 __setattr__是类在设置属性(包含已有属性重新修改属性值)时会自动调用的魔法方法 话不多说,直接上例子,如有问题麻烦 ...

  2. python 中的__getattr__和__setattr__

    __getattr__为内置方法,当使用点号获取实例属性时,如果属性不存在就自动调用__getattr__方法 __setattr__当设置类实例属性时自动调用,如j.name=5 就会调用__set ...

  3. python __getattr__,__setattr__方法的理解

    (1)__getattr__(self, item): 在访问对象的item属性的时候,如果对象并没有这个相应的属性,方法,那么将会调用这个方法来处理...这里要注意的时,假如一个对象叫fjs,  他 ...

  4. __getattribute__()、__getattr__()、__setattr__()、__delattr__()

    访问顺序: 实例的__getattribute__().Descriptor的__get__().实例的__dict__.只读Descriptor的__get__().实例的__getattr__() ...

  5. __getattr__和__setattr__

    getattr class Local:def __getattr__(self, item):print(item)obj = Local() obj.xx 运行结果 xx setattr clas ...

  6. python中getattr详解_Python类中方法getitem和getattr详解

    请分享高手帮小编详解一下Python中的getattr内置函数没明白这个内置函数得意思.麻烦帮小编讲解一下. 其实这个方法最主要的作用是实现反射机制.也就是说可以通过字符串获取方法实例.这样,你就可以 ...

  7. python __setattr__ , __getattr__

    Python Class 对象或类型通过内置成员 __dict__ 来存储成员信息. 我们还可以通过重载 __getattr__ 和 __setattr__ 来拦截对成员的访问,需要注意的是 __ge ...

  8. python中的__dict__,__getattr__,__setattr__

    python class 通过内置成员__dict__ 存储成员信息(字典) 首先用一个简单的例子看一下__dict__ 的用法 class A():def __init__(self,ax,bx): ...

  9. python setattribute_python __setattr__ , __getattr__ , __setattribute__ 防止死循环 | 学步园

    Python Class 对象或类型通过内置成员 __dict__ 来存储成员信息. 我们还可以通过重载 __getattr__ 和 __setattr__ 来拦截对成员的访问,需要注意的是 __ge ...

最新文章

  1. Spring中利用applicationContext.xml文件实例化对象和调用方法
  2. TCP层,flags字段标识位含义说明
  3. 图像处理入门 100 题,有人把它翻译成了中文版!
  4. 一个托盘程序演示 -闹钟 Alert
  5. RPC-非阻塞通信下的同步API实现原理,以Dubbo为例
  6. Java、Android、oc冒泡排序算法随笔
  7. ios cell点击对勾_带图像和对勾的iOS自定义TableView
  8. kuangbin专题 专题1 简单搜索
  9. 智能门锁的千亿市场,为何迟迟不来?
  10. 需求调研报告模板_培训需求调研报告不会写,遇到问题咋解决?
  11. linux的php探针使用,php探针在Linux下的安装过程分享
  12. matlab仿真高斯脉冲,高斯脉冲comsol仿真
  13. 取石子游戏--尼姆博弈
  14. 台式机就是指什么的计算机,什么是台式机操作系统
  15. 股票十档行情数据接口怎么看?
  16. 如何预测用户query意图 « 搜索技术博客-淘宝
  17. git仓库中文件较多,如何拉取指定文件到本地
  18. 黑苹果卡在白苹果不动_iphone5开机白屏中间黑苹果,卡住不动。
  19. React源码解毒 - render方法解析
  20. 高定价预计将降低iPhone XS的需求

热门文章

  1. 总结最近遇到的几个问题
  2. 51单片机红外电子密码锁【红外对管矩阵键盘数码管LCD1602显示模块】
  3. python -- shutil
  4. Ext.Net 1.x_Ext.Net.Grid拖动行排序,【最上】【最下】【上移】【下移】按钮排序
  5. 80端口被占用 默默的黑手SKYPE
  6. OCR应用:证件识别
  7. linux运行程序 -sh: ./xxxxx: not found 解决办法
  8. python分层抽样_基于列的sklearn分层抽样
  9. python判断正数和负数教案_正数和负数教学设计
  10. 深圳国际会展中心希尔顿花园酒店亮相粤港澳大湾区核心地段