可变集合需要实现: __len__  __getitem__    __setitem__  __delitem__不可变集合需要实现: __len__  __getitem__ __len__:返回集合长度 __getitem__(self, item) 使用索引访问元素 __setitem__(self, key, value) 对索引赋值,使用 self[key] = value . __delitem__(self, key) 删除索引值 del self[key]    __conta…
python之 __getattr__.__getattr__.__getitem__.__setitem__ 使用 __getattr__内置使用点号获取实例属性属性如 s.name,自调用__getattr__ __setattr__设置类实例属性 如s.name='tom',自调用__setattr__ __getitem__ 使用[]获取实例属性 如s['name'],自调用__getitem__ __setitem__ 使用[]设置实例属性如 s['name'] = 'tom' ,自调…
h2 { color: #fff; background-color: #7CCD7C; padding: 3px; margin: 10px 0px } h3 { color: #fff; background-color: #008eb7; padding: 3px; margin: 10px 0px } python的魔法方法: 在Python中,如果我们想实现创建类似于序列和映射的类,可以通过重写魔法方法__getitem__.__setitem__.__delitem__.__len_…
#__getitem__ __setitem__ __delitem__运行设置key value值了class fun: def __init__(self): print('test') def run(self): print('run') def __getitem__(self, item): print('__getitem__','item:',item) def __setitem__(self, key, value): print('__setitem__','key:',k…
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法__getitem__() #http://www.cnblogs.com/hongfei/p/3858256.html #__getitem__ #如果类把某个属性定义为序列,可以使用__getitem__()输出序列属性中的某个元素. class FruitShop(): def __getitem__(self,i): return self.fruits[i]#可迭代对象 i…
object._getattr_(self, name) 拦截点号运算.当对未定义的属性名称和实例进行点号运算时,就会用属性名作为字符串调用这个方法.如果继承树可以找到该属性,则不调用此方法 实例instance通过instance.name访问属性name,只有当属性name没有在实例的__dict__或它构造类的__dict__或基类的__dict__中没有找到,才会调用__getattr__.当属性name可以通过正常机制追溯到时,__getattr__是不会被调用的.如果在__getat…
本节知识点 1.__get__, __getattr__, __getattribute__的区别 2.__getattr__巧妙应用 3.延迟初始化(lazy property) 1.__get__, __getattr__, __getattribute__的区别 obj.__getattribute__(self, name) 在实例访问属性的时候无条件被调用.如果class中定义了__getattr__(),__getattr__()也不会被调用,除非显示的调用或者没有访问到属性引发At…
在Python中有这两个魔法方法容易让人混淆:__getattr__和getattribute.通常我们会定义__getattr__而从来不会定义getattribute,下面我们来看看这两个的区别. __getattr__魔法方法 class MyClass: def __init__(self, x): self.x = x def __getattr__(self, item): print('{}属性为找到!'.format(item)) return None >>> obj…
class MyDictionary(object): """docstring for MyDictionary""" kv = {} def __init__(self): super(MyDictionary, self).__init__() def __getitem__(self, key): return self.kv[key] def __setitem__(self, key, value): self.kv[key] = v…
# 对象作为len()函数的参数是必须实现该方法 __len__ # 使用类似字典方式访问成员时必须实现 dic['pro_name'] __getitem__ # 使用类似字典方式设置成员时必须实现 dic['pro_name']='asdf' __setitem__ # 使用类似字典方式删除成员时必须实现 delete dic['pro_name'] __delitem__ class DictDemo: def __init__(self,key,value): self.dict = {…