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程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
简介Python的collections模块中defaultdict类型的用法
Jul 07 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
python将数组n等分的实例
Dec 02 Python
django框架forms组件用法实例详解
Dec 10 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
Python中的__init__作用是什么
Jun 09 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
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
PHP实现货币换算的方法
2014/11/29 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
Laravel 队列使用的实现
2019/01/08 PHP
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
在Python中使用Mako模版库的简单教程
2015/04/08 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
Python实现手势识别
2020/10/21 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
师范生教师实习自我鉴定
2013/09/27 职场文书
玩具公司的创业计划书
2013/12/31 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
污水处理保证书
2015/05/09 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书