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的Cookie.py模块支持冒号做key的方法
Dec 28 Python
c++生成dll使用python调用dll的方法
Jan 20 Python
Python实现的石头剪子布代码分享
Aug 22 Python
Python实现的简单发送邮件脚本分享
Nov 07 Python
python实现图片变亮或者变暗的方法
Jun 01 Python
python3+PyQt5泛型委托详解
Apr 24 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
python代码如何实现余弦相似性计算
Feb 09 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
php实现快速排序法函数代码
2012/08/27 PHP
php判断是否为json格式的方法
2014/03/04 PHP
php中的ini配置原理详解
2014/10/14 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
Python读大数据txt
2016/03/28 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
Python中一些深不见底的“坑”
2019/06/12 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
金属材料工程个人求职的自我评价
2013/12/04 职场文书
翻译学院毕业生自荐书
2014/02/02 职场文书
大课间活动实施方案
2014/03/06 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
财务务虚会发言材料
2014/10/20 职场文书
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL