您的位置:首页 > 编程语言 > Python开发

Python3基础 __getattr__ 在访问一个不存在的属性时,新增提示功能

2017-01-20 22:20 381 查看
镇场诗:
    清心感悟智慧语,不着世间名与利。学水处下纳百川,舍尽贡高我慢意。
    学有小成返哺根,愿铸一良心博客。诚心于此写经验,愿见文者得启发。
——————————————————————————————————————————

code:

class MyClass :
def __init__(self,work) :
self.work=work
#真是敬佩小甲鱼老师,他是怎么想到这么写的,巧妙呀
def __getattribute__(self,name) :
print("你正在访问一个存在的属性")
return super().__getattribute__(name)

def __getattr__(self,name) :
print("你正在访问一个不存在的属性")
return super().__getattr__(name)

def __setattr__(self,name,value) :
print("你正在设置一个存在的属性的值")
return super().__setattr__(name,value)
def __delattr__(self,name) :
print("你正在删除一个属性")
return super().__delattr__(name)


result:

>>> a=MyClass(1)
你正在设置一个存在的属性的值
>>> a.NotExist #注意优先级
你正在访问一个存在的属性
你正在访问一个不存在的属性
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
a.NotExist #注意优先级
File "C:\Users\Administrator\Desktop\myCode.py", line 11, in __getattr__
return super().__getattr__(name)
AttributeError: 'super' object has no attribute '__getattr__'
>>> a.work=1
你正在设置一个存在的属性的值
>>> del a.work
你正在删除一个属性


——————————————————————————————————————————
博文的精髓,在技术部分,更在镇场一诗。Python版本3.5,系统 Windows7。
Python是优秀的语言,值得努力学习。我是跟着小甲鱼视频教程学习的,推荐。
我是一个新手,所以如果博文的内容有可以改进的地方,甚至有错误的地方,请留下评论,我一定努力改正,争取成就一个良心博客。
注:此文仅作为科研学习,如果我无意中侵犯了您的权益,请务必及时告知,我会做出改正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐