这篇文章主要介绍了Python面向对象之类的内置attr属性,结合实例形式分析了Python面向对象中类的属性相关定义、赋值、修改等操作与注意事项,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

最新资讯
“双11”预售第一天探班李佳琦直播间 单日成交约34亿

“双11”预售第一天探

“双11”预售第一天,每经记者探班李佳琦直播间 李佳琦7
优胜教育创始人哽咽直播 退费无果家长吐槽其在演戏

优胜教育创始人哽咽直

带着哽咽的声音,优胜教育创始人陈昊出现在直播间,开启了
超2万亿“巨无霸”蚂蚁集团蓄势待发 解码估值攀升的“潜台词”

超2万亿“巨无霸”蚂

一方面显示的是市场对蚂蚁的热捧和认可;但另一方面,万亿
手机厂商齐聚IoT阵营 开启5G万物互融生态新战役

手机厂商齐聚IoT阵营

在经历了此前多轮预告之后,OPPO终于发布了旗下相对完整
嘀嗒出行率先冲刺上市  网约出租车“行业老二”如何突围?

嘀嗒出行率先冲刺上市

嘀嗒2017年才进入网约出租车市场,且订单规模远远小于滴
钱烧光了路还没找到 二手车行业进退两难

钱烧光了路还没找到

中国约95%车源集中在个人卖家手中,二手车又是典型的大
最新文章
在pycharm中为项目导入anacodna环境的操作方法

在pycharm中为项目导

这篇文章主要介绍了在pycharm中为项目导入anacodna环
tensorflow的ckpt及pb模型持久化方式及转化详解

tensorflow的ckpt及pb

今天小编就为大家分享一篇tensorflow的ckpt及pb模型持
PyTorch笔记之scatter()函数的使用

PyTorch笔记之scatter

这篇文章主要介绍了PyTorch笔记之scatter()函数的使用
python3实现网页版raspberry pi(树莓派)小车控制

python3实现网页版ras

这篇文章主要为大家详细介绍了python3实现网页版raspb
完美解决pycharm导入自己写的py文件爆红问题

完美解决pycharm导入

今天小编就为大家分享一篇完美解决pycharm导入自己写
pycharm内无法import已安装的模块问题解决

pycharm内无法import

今天小编就为大家分享一篇pycharm内无法import已安装