python __getattr__和__setattr__
__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__相关推荐
- Python __getattr__和__setattr__方法介绍
__getattr__是类在调用属性时,如果没有该属性会自动调用的魔法方法 __setattr__是类在设置属性(包含已有属性重新修改属性值)时会自动调用的魔法方法 话不多说,直接上例子,如有问题麻烦 ...
- python 中的__getattr__和__setattr__
__getattr__为内置方法,当使用点号获取实例属性时,如果属性不存在就自动调用__getattr__方法 __setattr__当设置类实例属性时自动调用,如j.name=5 就会调用__set ...
- python __getattr__,__setattr__方法的理解
(1)__getattr__(self, item): 在访问对象的item属性的时候,如果对象并没有这个相应的属性,方法,那么将会调用这个方法来处理...这里要注意的时,假如一个对象叫fjs, 他 ...
- __getattribute__()、__getattr__()、__setattr__()、__delattr__()
访问顺序: 实例的__getattribute__().Descriptor的__get__().实例的__dict__.只读Descriptor的__get__().实例的__getattr__() ...
- __getattr__和__setattr__
getattr class Local:def __getattr__(self, item):print(item)obj = Local() obj.xx 运行结果 xx setattr clas ...
- python中getattr详解_Python类中方法getitem和getattr详解
请分享高手帮小编详解一下Python中的getattr内置函数没明白这个内置函数得意思.麻烦帮小编讲解一下. 其实这个方法最主要的作用是实现反射机制.也就是说可以通过字符串获取方法实例.这样,你就可以 ...
- python __setattr__ , __getattr__
Python Class 对象或类型通过内置成员 __dict__ 来存储成员信息. 我们还可以通过重载 __getattr__ 和 __setattr__ 来拦截对成员的访问,需要注意的是 __ge ...
- python中的__dict__,__getattr__,__setattr__
python class 通过内置成员__dict__ 存储成员信息(字典) 首先用一个简单的例子看一下__dict__ 的用法 class A():def __init__(self,ax,bx): ...
- python setattribute_python __setattr__ , __getattr__ , __setattribute__ 防止死循环 | 学步园
Python Class 对象或类型通过内置成员 __dict__ 来存储成员信息. 我们还可以通过重载 __getattr__ 和 __setattr__ 来拦截对成员的访问,需要注意的是 __ge ...
最新文章
- Spring中利用applicationContext.xml文件实例化对象和调用方法
- TCP层,flags字段标识位含义说明
- 图像处理入门 100 题,有人把它翻译成了中文版!
- 一个托盘程序演示 -闹钟 Alert
- RPC-非阻塞通信下的同步API实现原理,以Dubbo为例
- Java、Android、oc冒泡排序算法随笔
- ios cell点击对勾_带图像和对勾的iOS自定义TableView
- kuangbin专题 专题1 简单搜索
- 智能门锁的千亿市场,为何迟迟不来?
- 需求调研报告模板_培训需求调研报告不会写,遇到问题咋解决?
- linux的php探针使用,php探针在Linux下的安装过程分享
- matlab仿真高斯脉冲,高斯脉冲comsol仿真
- 取石子游戏--尼姆博弈
- 台式机就是指什么的计算机,什么是台式机操作系统
- 股票十档行情数据接口怎么看?
- 如何预测用户query意图 « 搜索技术博客-淘宝
- git仓库中文件较多,如何拉取指定文件到本地
- 黑苹果卡在白苹果不动_iphone5开机白屏中间黑苹果,卡住不动。
- React源码解毒 - render方法解析
- 高定价预计将降低iPhone XS的需求
热门文章
- 总结最近遇到的几个问题
- 51单片机红外电子密码锁【红外对管矩阵键盘数码管LCD1602显示模块】
- python -- shutil
- Ext.Net 1.x_Ext.Net.Grid拖动行排序,【最上】【最下】【上移】【下移】按钮排序
- 80端口被占用 默默的黑手SKYPE
- OCR应用:证件识别
- linux运行程序 -sh: ./xxxxx: not found 解决办法
- python分层抽样_基于列的sklearn分层抽样
- python判断正数和负数教案_正数和负数教学设计
- 深圳国际会展中心希尔顿花园酒店亮相粤港澳大湾区核心地段