美文网首页
16.双下划线开头的attr方法

16.双下划线开头的attr方法

作者: 一枼落知天下 | 来源:发表于2019-06-03 16:30 被阅读0次
    """
    
    __delattr__
    
    __setattr__
    
    # 属性不存在的时候,会调用
    __getattr__
    
    """
    
    class Foo:
        
        def __init__(self,name):
            self.name = name
    
        # 自定义获取属性过程
        def __getattr__(self,item):
            print('====>属性[%s]不存在!'%item)
    
        # 自定义设置属性过程
        def __setattr__(self,key,value):
            print("执行__setattr__",key,value)
            if type(value) is str:
                print("开始设置")
                # 进入死循环
                # self.key = value => __setattr__ => 
                # self.key = value => __setattr__ => 
                self.__dict__[key] = value
            else:
                print("必须是字符串类型")
    
        # 自定义删除属性过程
        def __delattr__(self,item):
            print('不允许删除属性[%s]!'%item)
            # del self.item 
            # print("执行__delattr__")
            # self.__dict__.pop(item)
    
    # print(Foo.__dict__)
    # print(dir(Foo))
    
    f = Foo("Jhou")
    f.age  #调用 __getattr__
    f.sex = "女"
    del f.name
    print(f.__dict__)
    
    

    相关文章

      网友评论

          本文标题:16.双下划线开头的attr方法

          本文链接:https://www.haomeiwen.com/subject/tsacxctx.html