Python方法__getitem__
可以实现对象的迭代功能,然后可以使用for ... in ...
来迭代对象了
class Animal:
def __init__(self,animal_list):
self.animal_name = animal_list
animals=Animal(['dog','cat','fish'])
for animal in animals:
print(animal)
输出错误:
TypeError: 'Animal' object is not iterable
在用 for..in..
迭代对象时,如果对象没有实现 __iter__
__next__
迭代器协议,Python的解释器就会去寻找__getitem__
来迭代对象,如果连__getitem__
都没有定义,这解释器就会报对象不是迭代器的错误,如上述错误.
修改如下:
class Animal:
def __init__(self,animal_list):
self.animal_name = animal_list
def __getitem__(self,index):
print(index)
return self.animal_name[index]
animals=Animal(['dog','cat','fish'])
for animal in animals:
print(animal)
0
dog
1
cat
2
fish
3
参考:https://blog.csdn.net/qq_24805141/article/details/81411775