Python面向对象之类的内置attr属性示例


Posted in Python onDecember 14, 2018

本文实例讲述了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 相关文章推荐
在Python的Flask框架中实现单元测试的教程
Apr 20 Python
Python的Django框架中从url中捕捉文本的方法
Jul 20 Python
Python_LDA实现方法详解
Oct 25 Python
Python 使用with上下文实现计时功能
Mar 09 Python
tensorflow 获取模型所有参数总和数量的方法
Jun 14 Python
详解python中的装饰器
Jul 10 Python
Python sorted函数详解(高级篇)
Sep 18 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
Python----数据预处理代码实例
Mar 20 Python
PyTorch的SoftMax交叉熵损失和梯度用法
Jan 15 Python
Python猜数字算法题详解
Mar 01 Python
python实现邮件循环自动发件功能
Sep 11 Python
python模糊图片过滤的方法
Dec 14 #Python
python 随机打乱 图片和对应的标签方法
Dec 14 #Python
对python打乱数据集中X,y标签对的方法详解
Dec 14 #Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 #Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 #Python
用python爬取租房网站信息的代码
Dec 14 #Python
从运行效率与开发效率比较Python和C++
Dec 14 #Python
You might like
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
js 对象是否存在判断
2009/07/15 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
Python高斯消除矩阵
2019/01/02 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
kfc实习自我鉴定
2013/12/14 职场文书
关于人生的感言
2014/01/17 职场文书
欢迎领导标语
2014/06/27 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
大学生创业事迹材料
2014/12/30 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
预备党员表决心的话
2015/09/22 职场文书
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle