Python-__getattr__与__getattribute__
文章目录
- __getattr__()
- 解释说明
- __getattribute__()
- 解释说明
- 使用案例
getattr()
解释说明
定义了__getattr__(),当访问object不存在的属性时会调用该方法
不定义访问不存在的属性时会报 AttributeError
class User:def __init__(self,info={}):self.info = info
if __name__ == "__main__":user = User(info={"company_name":"imooc", "name":"bobby"})print(user.test)结果:
AttributeError: 'User' object has no attribute 'test'
当我们使用了这个方法,则不会报错
class User:def __init__(self,info={}):self.info = infodef __getattr__(self, item):return self.info[item]if __name__ == "__main__":user = User(info={"company_name":"aaaa", "name":"bbbb"})print(user.name)
getattribute()
解释说明
__getattribute_是属性访问拦截器,就是当这个类的属性被访问时,会自动调用类的__getattribute__方法
使用案例
当我们访问已有属性
class User:def __init__(self,info={}):self.info = infodef __getattribute__(self, item):return "ccc"if __name__ == "__main__":user = User(info={"company_name":"aaa", "name":"bbb"})print(user.name)
当访问未知属性
class User:def __init__(self,info={}):self.info = infodef __getattribute__(self, item):return "cccc"if __name__ == "__main__":user = User(info={"company_name":"aaa", "name":"bbb"})print(user.test)
最后都会打印ccc
Python-__getattr__与__getattribute__相关推荐
- python getattr和getattribute_python中__getattr__和__getattribute__区别
重载__getattr__方法对类及其实例未定义的属性有效.如果访问的属性存在,就不会调用__getattr__方法.这个属性的存在,包括类属性和实例属性 classClassA: x= 'a' de ...
- python getattr和getattribute_Python的__getattr__和__getattribute__
__getattr__ __getattr__在当前主流的Python版本中都可用,重载__getattr__方法对类及其实例未定义的属性有效.也就属性是说,如果访问的属性存在,就不会调用__geta ...
- python getattr和getattribute_python中__get__、__getattr__、__getattribute__详解
__get__,__getattr__和__getattribute__(只存在于新式类)都是访问属性的方法,但有一定的区别. object.__getattr__(self, name) 通过实例访 ...
- 【7.2】__getattr__、__getattribute__魔法函数
1 #!/user/bin/env python 2 # -*- coding:utf-8 -*- 3 # __getattr__.__getattribute__ 4 # __getattr__ 就 ...
- Python中的getattr、__getattr__、__getattribute__、__get__
getattr getattr(object, name[, default])是Python的内置函数之一,它的作用是获取对象的属性. 示例 >>> class Foo: ... ...
- python getattr和getattribute_详解Python中 __get__和__getattr__和__getattribute__的区别
引子 假设我们有个类A,其中a是A的实例 a.x时发生了什么?属性的lookup顺序如下: 如果重载了__getattribute__,则调用. a.__dict__, 实例中是不允许有descrip ...
- python setattr 代码可读性_python __setattr__、__getattr__、__getattribute__全面详解
一.属性引用函数 hasattr(obj,name[,default]) getattr(obj,name) setattr(obj,name,value) delattr(obj,name) 二.属 ...
- Python--getattr、__getattr__、__getattribute__,倔强一下
反射前面我们已经学过了,那么为什么还要写这一篇呢,因为__getattribute__这个属性拦截器,但是在某些情况下使用起来,对应的意义不一样.除了属性拦截器之外,它也能跟反射达到类似的效果,至于它 ...
- Python __getattr__和__setattr__方法介绍
__getattr__是类在调用属性时,如果没有该属性会自动调用的魔法方法 __setattr__是类在设置属性(包含已有属性重新修改属性值)时会自动调用的魔法方法 话不多说,直接上例子,如有问题麻烦 ...
- python __getattr__,__setattr__方法的理解
(1)__getattr__(self, item): 在访问对象的item属性的时候,如果对象并没有这个相应的属性,方法,那么将会调用这个方法来处理...这里要注意的时,假如一个对象叫fjs, 他 ...
最新文章
- 提高图形匹配精度,亮风台提出「完全可训练」的图匹配方法|CVPR 2020 Oral
- [flask实践] 解决mysql数据库不支持中文的问题
- 计算机组成原理 — PCIe 总线
- 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞
- 提升方法---提升树
- Iterable 超级接口
- linux下如何查看主机是否安装了ftp server
- Linux下文件的权限管理及网络连接
- springMVC中获取request 对象
- [转载] Java基础知识面试题(2020最新版)
- 基于js alert confirm样式弹出框
- php 判断浏览器和设备
- NetBIOS name
- 如何将自己的网站上传至服务器并通过域名进行访问
- 【地图】高德静态地图(页面展示和导出Word)
- linux必应搜索,浏览器UA(四):必应搜索引擎(bing.com)的UserAgent参数
- 换脸上阵的路由界新面孔,联想云路由动手玩
- ARM汇编----GBLA,GBLL及GBLS
- 为什么最难不过二叉树的算法出现在面试题中都会被应聘者抱怨?
- 虚室教学:足不出户就能做实验
热门文章
- 2055013-56-2,Ald-Ph-PEG2-amine TFA salt,CHO-Ph-PEG2-amine TFA
- 强化学习 之 探索与利用
- ThreadPoolExecutor 线程池的七个参数
- Android后台开启服务默默拍照
- FPGA - 7系列 FPGA内部结构之Clocking -03- 时钟管理模块(CMT)
- android 贝塞尔曲线,即3点画弧线
- QT编译:error LNK2019: 无法解析的外部符号 __imp_xxx,函数 “public: static void __cdecl Control::KeySet(class QSt
- java 移动图片_Java写的一个简单的图片移动小程序
- 一、Tomcat概述
- 搭建个人的Leanote云笔记本