首页 > 代码库 > Python3基础 __delattr__ 在一个属性被删除时的行为

Python3基础 __delattr__ 在一个属性被删除时的行为

 镇场诗:
    诚听如来语,顿舍世间名与利。愿做地藏徒,广演是经阎浮提。
    愿尽吾所学,成就一良心博客。愿诸后来人,重现智慧清净体。
——————————————————————————————————————————

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是优秀的语言,值得努力学习。我是跟着小甲鱼视频教程学习的,推荐。
我是一个新手,所以如果博文的内容有可以改进的地方,甚至有错误的地方,请留下评论,我一定努力改正,争取成就一个良心博客。
注:此文仅作为科研学习,如果我无意中侵犯了您的权益,请务必及时告知,我会做出改正。

Python3基础 __delattr__ 在一个属性被删除时的行为