Python的魔法方法getitem用法: 如果类把某个属性定义为序列,可以使用getitem()输出序列属性中的某个元素,或者通过迭代访问属性序列中的某个元素,例如用for...in...访问。
class Student:
def __init__(self,student_list):
self.student_name = animal_list
students = Student(['Lily, 'Lucy', 'Susan'])
for student in students:
print(student)
在用 for..in.. 迭代对象时,如果对象没有实现 iter next 迭代器协议,Python的解释器就会去寻找getitem 来迭代对象,如果连getitem 都没有定义,这解释器就会报对象不是迭代器的错误:
Traceback (most recent call last):
File "C:/Users/Phantom/Desktop/python_learning/python900集/day15/magic/method_getitem.py", line 11, in <module>
animals = iter(animals)
TypeError: 'Student' object is not iterable
使用getitem方法后,就能够正常迭代了。
class Student:
def __init__(self,student_list):
self.student_name = animal_list
def __getitem__(self, item):
return self.student_name[item]
students = Student(['Lily, 'Lucy', 'Susan'])
for student in students:
print(student)
运行结果:
dog
cat
fish