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

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

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

时间: 2024-12-14 18:55:00

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

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

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: class MyClass : def __init__(self,work) : self.work=work #真是敬佩小甲鱼老师,他是怎么想到这么写的,巧妙呀 def __getattribute__(self,name): print("你正在访问一个存在属性"

Python3基础 len函数 获得一个字符串的字符个数

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 code 1 aStr='hello' 2 print(len(aStr)) 2 show ------------------------------------------博文的精髓,在技术部分,更在镇场一诗.Python是优秀的语言,值得努力学习.我是跟着小甲鱼视频教程学习的,推荐.如果

Python3基础 字符串 count 得到一个字符串出现的次数

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: myStr='HELLOHELLO' count=myStr.count('LO') #查找myStr字符串中 'LO'字符串出现的次数 print(count) result: ============= RESTART: C:/Users/Administrator/Des

Python3基础 字符串 capitalize 返回一个新的字符串,它的第一个字母大写

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: myStr='hello world' myNewStr=myStr.capitalize() #返回一个新的字符串 print(myStr) # 原字符串并未改变 print(myNewStr) result: ============= RESTART: C:/Users/

Python3基础 字符串 casefold 返回一个全是小写字母的新的字符串

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: myStr='HELLO' myNewStr=myStr.casefold() #返回一个全为小写字母的新字符串 print(myStr) # 原字符串并未改变 print(myNewStr) result: ============= RESTART: C:/Users/Ad

Python3基础 使用clear() 清空一个字典

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: dict1={'子':'鼠','丑':'牛','寅':'虎','卯':'兔','辰':'龙','巳':'蛇','午':'马','未':'羊','申':'猴','酉':'鸡','戌':'狗','亥':'猪'} print('子' in dict1.keys()) print('鼠

Python3基础 dict clear 清空一个字典

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code """ @Author : 行初心 @Date : 18-9-23 @Blog : www.cnblogs.com/xingchuxin @GitHub : github.com/GratefulHeartCoder """ de

Python3基础 hasattr 测试一个对象是否有指定的属性

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: class A : #属性 num=0 a=A() #属性的名字要用''包围起来 print(hasattr(a,'num')) print(hasattr(a,'n')) #否则 print(hasattr(a,num)) result: ============= REST

Python3基础 __setattr__ 在属性被赋值的时候,新增提示功能

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code """ @Author : 行初心 @Date : 18-9-23 @Blog : www.cnblogs.com/xingchuxin @GitHub : github.com/GratefulHeartCoder """ cl