python中__setattr__的属性设置
- 更新时间:2021-08-07 09:10:18
- 编辑:贾峻熙
我们帮大家精选了相关的编程文章,网友任雅辰根据主题投稿了本篇教程内容,涉及到Python相关内容,已被819网友关注,涉猎到的知识点内容可以在下方电子书获得。
参考资料
- 《软件架构:Python语言实现》配书资源 配套资源 / 64.3 MB / 阿南德·巴拉钱德拉·皮莱 推荐度:
- 11招玩转网络安全:用Python,更安全 PDF 电子书 / 156.5 MB / hstking 推荐度:
- 深度学习入门:基于Python的理论与实现(含源码) PDF 电子书 / 13.6 MB / 斋藤康毅 推荐度:
- Python数据科学指南 PDF 电子书 / 62.3 MB / Gopi 推荐度:
- Python神经网络编程 PDF 电子书 / 11.5 MB / 塔里克·拉希德 推荐度:
正文内容
码农之家最近发表了一篇名为《python中__setattr__的属性设置》的py文章,好久没看到这么好的Py技术类文章,把错误代码改掉了,看完如果觉得有用请记得收藏。
1、说明
定义类对象管理属性并将属性名以及值存储在一个实例对象中。
self.attrname 以及 instance.attrname 将会调用类的内置方法__setattr__方法。
2、实例
# attr.pyclass AcessControl: def __init__(self): self.hobby = "basketball" # 会调用下面的__setattr__方法 def __setattr__(self, key, value): # self.name = "xxxx" # 不能在__setattr__上使用self.attr,会导致递归应用循环 print("access control set attr ...") if key == 'age': self.__dict__[key] = value + 10 # 通过内建字典来保存属性数据 else: self.__dict__[key] = value def __delattr__(self, item): print("del item[%s]" % item) def __getattr__(self, item): print("get item[%s]" % item) def test_access_control(): ac = AcessControl() ac.age = 10 # 调用__setattr__ print(ac.age) # 直接输入值,没有调用__getattr__ print(ac.hobby) # 当属性有值时,也就是非None是不会调用__getattr__方法的,如果没有值,即None就会调用__getattr__方法 del ac.age # 调用__delattr__ print(ac.name) # 调用__getattr__,调用未定义的属性时候就会回调这个函数并且返回Noneif __name__ == '__main__': test_access_control()>>> python attr.py # 2.x & 3.x
以上就是python中__setattr__的属性设置,希望对大家有所帮助。
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
相关教程
-
基于python 二维数组及画图的实例详解
下面小编就为大家分享一篇基于python 二维数组及画图的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2019-08-26
-
Python给定一个句子倒序输出单词以及字母的方法
给网友朋友们带来一篇关于Python的教程,今天小编就为大家分享一篇Python给定一个句子倒序输出单词以及字母的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2023-01-04