Python面向对象之类的内置attr属性示例
本文实例讲述了Python面向对象之类的内置attr属性。分享给大家供大家参考,具体如下:
这个比较简单。
代码示例:
# -*- coding:utf-8 -*- #! python3 class Foo: x = 1; def __init__(self,y): self.y = y; def __getattr__(self,item): print('----->from getattr:你找的属性不存在') def __setattr__(self, key, value): print('----> from setattr') #self.key = value # 正常思维设置,但是只要设置属性就会触发这个方法,从而进入死递归, # 所以考虑从字典的属性入手修改属性值。 self.__dict__[key] = value def __delattr__(self,item): print('----->from delattr') #del self.item #这个也是同样的道理,会进入死递归 self.__dict__.pop(item) #_setattr_添加/修改属性会触发它的执行 f1 = Foo(10) print(f1.__dict__) #因为你重写了__setattr__,凡是赋值操作都会触发它的运行,你啥都没写,就是根本没赋值 #除非你直接操作属性字典,否则无法赋值 f1.z = 3 print(f1.__dict__) #__delattr__删除属性的时候会触发 f1.__dict__['a'] = 3 #可以直接修改对象的属性字典,来完成添加/修改属性的操作 del f1.a print(f1.__dict__)
运行结果:
----> from setattr
{'y': 10}
----> from setattr
{'y': 10, 'z': 3}
----->from delattr
{'y': 10, 'z': 3}
内置attr属性有三个:__getattr__,___setattr__,__delattr__
如果不重写,那么就用系统默认的。
更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
相关文章
Python Handler处理器和自定义Opener原理详解
这篇文章主要介绍了Python Handler处理器和自定义Opener原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-03-03python2.7安装opencv-python很慢且总是失败问题
这篇文章主要介绍了python2.7安装opencv-python很慢且总是失败问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-02-02Python 的 f-string 可以连接字符串与数字的原因解析
这篇文章主要介绍了Python 的 f-string 可以连接字符串与数字的原因解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-02-02Python 正则表达式 re.match/re.search/re.sub的使用解析
今天小编就为大家分享一篇Python 正则表达式 re.match/re.search/re.sub的使用解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-07-07Tensorflow2.1实现Fashion图像分类示例详解
这篇文章主要为大家介绍了Tensorflow2.1实现Fashion图像分类示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-11-11
最新评论