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的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
Python实现计算最小编辑距离
Mar 17 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
python实现kNN算法
Dec 20 Python
python实现AES加密解密
Mar 28 Python
学习python分支结构
May 17 Python
python数据挖掘需要学的内容
Jun 23 Python
tornado+celery的简单使用详解
Dec 21 Python
Tensorflow不支持AVX2指令集的解决方法
Feb 03 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 03 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正则替换处理HTML页面的方法
2015/06/17 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
php函数式编程简单示例
2019/08/08 PHP
JavaScript中常见陷阱小结
2010/04/27 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
python生成n个元素的全组合方法
2018/11/13 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
北京银河万佳Java面试题
2012/03/21 面试题
大学生军训感想
2014/02/16 职场文书
合作投资意向书
2014/04/01 职场文书
2015年党性分析材料
2014/12/19 职场文书
晚会开幕词
2015/01/28 职场文书