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代码实例
Feb 04 Python
Django中模版的子目录与include标签的使用方法
Jul 16 Python
Python中%r和%s的详解及区别
Mar 16 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
基于Python实现扑克牌面试题
Dec 11 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
Python3 集合set入门基础
Feb 10 Python
Python MySQL 日期时间格式化作为参数的操作
Mar 02 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
Pytorch可视化的几种实现方法
Jun 10 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP Class&Object -- 解析PHP实现二叉树
2013/06/25 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
smarty缓存用法分析
2014/12/16 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
编辑浪子版表单验证类
2007/05/12 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
JS实现点击事件统计的简单实例
2016/07/10 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
Python中的Numpy入门教程
2014/04/26 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
python实现ip代理池功能示例
2019/07/05 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
实习护士自我鉴定
2013/10/13 职场文书
团代会主持词
2014/04/02 职场文书
高中生班主任评语
2014/04/25 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
工程项目经理任命书
2014/06/05 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js
python 单机五子棋对战游戏
2022/04/28 Python