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实现抓取页面上链接的简单爬虫分享
Jan 21 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
使用python实现ftp的文件读写方法
Jul 02 Python
pytorch多GPU并行运算的实现
Sep 27 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
Python实现企业微信机器人每天定时发消息实例
Feb 25 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
Feb 25 Python
Python的in,is和id函数代码实例
Apr 18 Python
jupyter 使用Pillow包显示图像时inline显示方式
Apr 24 Python
对Python 字典元素进行删除的方法
Jul 31 Python
总结Python连接CS2000的详细步骤
Jun 23 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
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python max内置函数详细介绍
2016/11/17 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
九年级英语教学反思
2014/01/31 职场文书
教师新年寄语
2014/04/03 职场文书
家长对老师的评语
2014/04/18 职场文书
实习推荐信
2014/05/10 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
志愿者工作心得体会
2016/01/15 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书