python之 __getattr__、__getattr__、__getitem__、__setitem__ 使用

2021-09-21 17:13

阅读:608

标签:name   def   pyc   执行   its   get   ack   exit   pre    __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‘    


评论


亲,登录后才可以留言!