1.getitem
getitem(self,key):返回键对应的值,可以让对象实现迭代功能。
类中定义了这个__getitem__ 方法,那么它的实例对象(假定为p),可以像这样p[key] 取值【使用索引访问元素】,当实例对象做p[key] 运算时,会自动调用类中的方法__getitem__。
在使用中,我们可以通过索引触发,也可以通过for…in… 迭代对象时触发。
class Animals(object):
def __init__(self,animal_list):
self.animal_list = animal_list
def __getitem__(self,item):
return self.animal_list[item]
list = ["dog","cat","pig","kitti"]
animal = Animals(list)
#case 1
print(animal[2]) #pig
#case 2
for item in animal:
print(item)
dog
cat
pig
kitti
补充:在用 for…in… 迭代对象时,如果对象没有实现 iter ,next 迭代器协议,Python的解释器就会去寻找__getitem__ 来迭代对象,如果连__getitem__ 都没有定义,这解释器就会报对象不是迭代器的错误
279





