文章目录

  • __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__相关推荐

  1. python getattr和getattribute_python中__getattr__和__getattribute__区别

    重载__getattr__方法对类及其实例未定义的属性有效.如果访问的属性存在,就不会调用__getattr__方法.这个属性的存在,包括类属性和实例属性 classClassA: x= 'a' de ...

  2. python getattr和getattribute_Python的__getattr__和__getattribute__

    __getattr__ __getattr__在当前主流的Python版本中都可用,重载__getattr__方法对类及其实例未定义的属性有效.也就属性是说,如果访问的属性存在,就不会调用__geta ...

  3. python getattr和getattribute_python中__get__、__getattr__、__getattribute__详解

    __get__,__getattr__和__getattribute__(只存在于新式类)都是访问属性的方法,但有一定的区别. object.__getattr__(self, name) 通过实例访 ...

  4. 【7.2】__getattr__、__getattribute__魔法函数

    1 #!/user/bin/env python 2 # -*- coding:utf-8 -*- 3 # __getattr__.__getattribute__ 4 # __getattr__ 就 ...

  5. Python中的getattr、__getattr__、__getattribute__、__get__

    getattr getattr(object, name[, default])是Python的内置函数之一,它的作用是获取对象的属性. 示例 >>> class Foo: ... ...

  6. python getattr和getattribute_详解Python中 __get__和__getattr__和__getattribute__的区别

    引子 假设我们有个类A,其中a是A的实例 a.x时发生了什么?属性的lookup顺序如下: 如果重载了__getattribute__,则调用. a.__dict__, 实例中是不允许有descrip ...

  7. python setattr 代码可读性_python __setattr__、__getattr__、__getattribute__全面详解

    一.属性引用函数 hasattr(obj,name[,default]) getattr(obj,name) setattr(obj,name,value) delattr(obj,name) 二.属 ...

  8. Python--getattr、__getattr__、__getattribute__,倔强一下

    反射前面我们已经学过了,那么为什么还要写这一篇呢,因为__getattribute__这个属性拦截器,但是在某些情况下使用起来,对应的意义不一样.除了属性拦截器之外,它也能跟反射达到类似的效果,至于它 ...

  9. Python __getattr__和__setattr__方法介绍

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

  10. python __getattr__,__setattr__方法的理解

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

最新文章

  1. 提高图形匹配精度,亮风台提出「完全可训练」的图匹配方法|CVPR 2020 Oral
  2. [flask实践] 解决mysql数据库不支持中文的问题
  3. 计算机组成原理 — PCIe 总线
  4. 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞
  5. 提升方法---提升树
  6. Iterable 超级接口
  7. linux下如何查看主机是否安装了ftp server
  8. Linux下文件的权限管理及网络连接
  9. springMVC中获取request 对象
  10. [转载] Java基础知识面试题(2020最新版)
  11. 基于js alert confirm样式弹出框
  12. php 判断浏览器和设备
  13. NetBIOS name
  14. 如何将自己的网站上传至服务器并通过域名进行访问
  15. 【地图】高德静态地图(页面展示和导出Word)
  16. linux必应搜索,浏览器UA(四):必应搜索引擎(bing.com)的UserAgent参数
  17. 换脸上阵的路由界新面孔,联想云路由动手玩
  18. ARM汇编----GBLA,GBLL及GBLS
  19. 为什么最难不过二叉树的算法出现在面试题中都会被应聘者抱怨?
  20. 虚室教学:足不出户就能做实验

热门文章

  1. 2055013-56-2,Ald-Ph-PEG2-amine TFA salt,CHO-Ph-PEG2-amine TFA
  2. 强化学习 之 探索与利用
  3. ThreadPoolExecutor 线程池的七个参数
  4. Android后台开启服务默默拍照
  5. FPGA - 7系列 FPGA内部结构之Clocking -03- 时钟管理模块(CMT)
  6. android 贝塞尔曲线,即3点画弧线
  7. QT编译:error LNK2019: 无法解析的外部符号 __imp_xxx,函数 “public: static void __cdecl Control::KeySet(class QSt
  8. java 移动图片_Java写的一个简单的图片移动小程序
  9. 一、Tomcat概述
  10. 搭建个人的Leanote云笔记本