Python __getattribute__、__getattr__、__get__总结
来源:互联网 发布:笔记本触摸屏锁定软件 编辑:程序博客网 时间:2024/06/05 05:19
先上一段代码:
class MyClass(object): v1 = 1 def __getattribute__(self, *args, **kwargs): print '__getattribute__' return object.__getattribute__(self, *args, **kwargs) def __getattr__(self, name): print '__getattr__' return name def __get__(self, instance, owner): print '__get__' return selfclass MyClass2(object): d = MyClass()if __name__ == '__main__': c = MyClass() c2 = MyClass2() print '-------- c.v1 --------' print c.v1 print '-------- c.v2 --------' print c.v2 print '-------- c2.d --------' print c2.d print '-------- MyClass.v1 --------' print MyClass.v1
运行结果:
-------- c.v1 --------__getattribute__1-------- c.v2 --------__getattribute____getattr__v2-------- c2.d --------__get__<__main__.MyClass object at 0x101050f90>-------- MyClass.v1 --------1
可以看到:
- 访问c1的v1属性,直接调用getattribute方法。
- 访问c1的v2属性(不存在),先调用getattribute方法,没有找到这个属性,再调用getattr方法。
- 访问c2的d属性(它是MyClass的一个实例),将调用MyClass的get方法。
- 访问MyClass的v1属性,不会调用getattribute和getattr方法。
0 0
- Python __getattribute__、__getattr__、__get__总结
- python __get__ __getattr__ __getattribute__
- python中__get__,__getattr__,__getattribute__的区别
- python中__get__,__getattr__,__getattribute__的区别
- python中__get__,__getattr__,__getattribute__的区别
- python中__get__,__getattr__,__getattribute__的区别
- python总结(五):__get__、__getattr__、__getitem__、__getattribute__之间的差异与联系
- python中__get__, __getattr__和__getattribute__区别说明
- 详解Python中 __get__和__getattr__和__getattribute__的区别
- python3中__get__,__getattr__,__getattribute__的区别
- 飘逸的python - __get__ vs __getattr__ vs __getattribute__以及属性的搜索策略
- python:__getattr__() 和 __getattribute__()
- python __getattr__和__getattribute__
- Python __getattr__ __getattribute__
- Python __getattr__ __getattribute__ __setattr__
- Python----__getattribute__, __getattr__
- python __setattr__, __getattr__, __delattr__,__getattribute__
- Python笔记:getattr,__getattr__,__getattribute__
- String类
- TCP/IP
- 关于Java Web Spring 框架下将静态文件放于WEB-INF下如何访问
- 简单的asp.net模拟邮箱系统基础实现(二 (2)具体版块功能的实现及关键代码之登陆页面)
- Filter(上)
- Python __getattribute__、__getattr__、__get__总结
- CT107D蓝桥杯独立键盘运用(5)
- 201612-2 工资计算
- Win32俄罗斯方块
- java网络编程之URL编程
- TCP拥塞控制算法
- 完美解决 blackarch linux 黑客系统国内安装问题
- Error:java.lang.RuntimeException: Crunching Cruncher dialog_et_bg.9.png failed, see logs
- 如果你是程序员,这些细节会害死你(3)