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编码时应该注意的几个情况
Mar 04 Python
使用python解析xml成对应的html示例分享
Apr 02 Python
python获取本机外网ip的方法
Apr 15 Python
浅谈Python中数据解析
May 05 Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 Python
使用pyecharts在jupyter notebook上绘图
Apr 23 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
浅谈pytorch中的BN层的注意事项
Jun 23 Python
python 实现"神经衰弱"翻牌游戏
Nov 09 Python
Django debug为True时,css加载失败的解决方案
Apr 24 Python
Python使用UDP实现720p视频传输的操作
Apr 24 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
php获取mysql版本的几种方法小结
2008/03/25 PHP
PHP 各种排序算法实现代码
2009/08/20 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
thinkphp分页集成实例
2017/07/24 PHP
ExtJs的Date格式字符代码
2010/12/30 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
pygame学习笔记(5):游戏精灵
2015/04/15 Python
详解Python装饰器由浅入深
2016/12/09 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
员工培训邀请函
2014/02/02 职场文书
委托公证书范本
2014/04/03 职场文书
建设工地安全标语
2014/06/07 职场文书
迎国庆演讲稿
2014/09/15 职场文书
生日宴会祝酒词
2015/08/10 职场文书