zoukankan      html  css  js  c++  java
  • 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'
    复制代码

       

  • 相关阅读:
    htb系列-Web Challenges-Console
    htb系列-Web Challenges-FreeLancer
    离散数学1复习要点
    样本均值和总体均值的区别
    chapter7.参数估计
    计算机系统基础复习指北
    C语言学生信息管理系统
    数学的意义
    计算机系统基础第一章
    C语言文件读写的操作
  • 原文地址:https://www.cnblogs.com/vincent-sh/p/13167641.html
Copyright © 2011-2022 走看看