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基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
python机器学习之神经网络实现
Oct 13 Python
使用python实现mqtt的发布和订阅
May 05 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
python实现socket+threading处理多连接的方法
Jul 23 Python
python实现机器人卡牌
Oct 06 Python
Python动态声明变量赋值代码实例
Dec 30 Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
详解Python自动化之文件自动化处理
Jun 21 Python
Django路由层如何获取正确的url
Jul 15 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 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 json_encode值中大括号与花括号区别
2013/09/30 PHP
php用正则表达式匹配中文实例详解
2013/11/06 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
Bootstrap基础学习
2015/06/16 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
python按修改时间顺序排列文件的实例代码
2019/07/25 Python
在Django中实现添加user到group并查看
2019/11/18 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
大学生个人简历中的自我评价
2013/12/27 职场文书
会议接待欢迎标语
2014/10/08 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS