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标准日志模块logging的使用方法
Nov 01 Python
python脚本实现查找webshell的方法
Jul 31 Python
在Python中操作文件之read()方法的使用教程
May 24 Python
Python的for和break循环结构中使用else语句的技巧
May 24 Python
详解python中的json的基本使用方法
Dec 21 Python
Python 多线程实例详解
Mar 25 Python
Python探索之URL Dispatcher实例详解
Oct 28 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
Django自定义用户认证示例详解
Mar 14 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
利用python实现周期财务统计可视化
Aug 25 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 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
西德产收音机
2021/03/01 无线电
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
2018/11/02 Javascript
JS实现li标签的删除
2019/04/12 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
决策树的python实现方法
2014/11/18 Python
机器学习的框架偏向于Python的13个原因
2017/12/07 Python
Django中的Model操作表的实现
2018/07/24 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
python 如何调用远程接口
2020/09/11 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
网上祭英烈活动总结
2015/02/04 职场文书
优秀团员个人总结
2015/02/26 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers