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 os模块中的isfile()和isdir()函数均返回false问题解决方法
Feb 04 Python
python3+PyQt5+Qt Designer实现扩展对话框
Apr 20 Python
解决django前后端分离csrf验证的问题
Feb 03 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
python已协程方式处理任务实现过程
Dec 27 Python
python画环形图的方法
Mar 25 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
如何利用python发送邮件
Sep 26 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 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
global.php
2006/12/09 PHP
PHP中常用的魔术方法
2017/04/28 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
window.open的功能全解析
2006/10/10 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
Python实现从URL地址提取文件名的方法
2015/05/15 Python
Selenium定位元素操作示例
2018/08/10 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
使用pip安装python库的多种方式
2019/07/31 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
先进工作者获奖感言
2014/02/08 职场文书
遗嘱继承公证书
2014/04/09 职场文书
文案策划求职信
2014/04/14 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
促销活动总结模板
2014/07/01 职场文书
大专学生求职自荐信
2014/07/06 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
同事离别感言
2015/08/04 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis