• python之 __getattr__、__getattr__、__getitem__、__setitem__ 使用


    python之 __getattr__、__getattr__、__getitem__、__setitem__ 使用

    __getattr__内置使用点号获取实例属性属性如 s.name,自调用__getattr__
    __setattr__设置类实例属性 如s.name='tom',自调用__setattr__
    __getitem__ 使用[]获取实例属性 如s['name'],自调用__getitem__
    __setitem__ 使用[]设置实例属性如 s['name'] = 'tom' ,自调用__setitem__
    __dict__ 为参数字典

     对象['X']            #执行__getitem__

     对象['X'] = 123        #执行__setitem__

     对象.X       #执行__getattr__

     对象.X =123           #执行__setattr__     

    上代码:

      

    class Student:
        def __getattr__(self, item):
            return item + ' is not exits'
    
        def __setattr__(self, key, value):
            self.__dict__[key] = value
    
        def __getitem__(self, item):
            return self.__dict__[item]
    
        def __setitem__(self, key, value):
            self.__dict__[key] = value
    
    
    s = Student()
    print(s.name)  # 调用__getattr__方法 输出'name is not exits'
    s.age = 1  # 调用__setattr__ 方法
    print(s.age)  # 输出 1
    print(s['age'])  # 调用 __getitem__方法 输出1
    s['name'] = 'tom'  # 调用 __setitem__ 方法
    print(s['name'])  # 调用 __getitem__ 方法 输出 'tom'

       

  • 相关阅读:
    day1-字符串拼接、表达式、break和continue
    ssh免密登录
    1-5 文档的基本 CRUD 与批量操作
    1-4 安装logstash
    1-3 安装cerebro
    1-2 kibana 7.5.1 安装配置
    1-1 elasticsearch7.5 集群搭建 es 7
    生产环境k8s集群搭建
    Gearman任务分布系统部署windows平台_使用Cygwin
    [转载]单元测试之道(使用NUnit)
  • 原文地址:https://www.cnblogs.com/wxj1129549016/p/9637087.html
Copyright © 2020-2023  润新知