首页 > 编程语言 > 详细

Python基础26类-内置函数__setattr__,__getattr__,__delattr__

时间:2019-02-28 20:50:18      阅读:197      评论:0      收藏:0      [点我收藏+]
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 setttr)
        #self.key=value #self.key又会去调用__setattr__()方法,这样就无限递归了
        if type(value) is str:
            self.__dict__[key]=value #应该用操作底层字典的方法
        else:
            print(只能接受字符串)

    def __delattr__(self, item):
        print(---->from delattr)
        # del self.item #同样会去调用__delattr__()方法,无限递归
        self.__dict__.pop(item)

print(dir(Foo))
f1=Foo(10)
print(f1.z) #只有属性不存在时触发__getattr__
f1.c=aa #设置属性是会触发__setattr__
print(f1.__dict__)
del f1.c #删除属性会触发__delattr__

 

Python基础26类-内置函数__setattr__,__getattr__,__delattr__

原文:https://www.cnblogs.com/josie930813/p/10452840.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!