Python: getitem方法理解
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.youkuaiyun.com/qq_24805141/article/details/81411775
Python迭代器深入理解
本文详细解析了Python中__getitem__方法如何使自定义类具备迭代能力,通过实例展示了未定义迭代器协议时的错误及解决方法,为理解Python迭代器提供清晰指导。
1480

被折叠的 条评论
为什么被折叠?



