Python的魔法方法getitem用法: 如果類把某個(gè)屬性定義為序列,可以使用getitem()輸出序列屬性中的某個(gè)元素,或者通過(guò)迭代訪問(wèn)屬性序列中的某個(gè)元素,例如用for...in...訪問(wèn)。
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.. 迭代對(duì)象時(shí),如果對(duì)象沒有實(shí)現(xiàn) iter next 迭代器協(xié)議,Python的解釋器就會(huì)去尋找getitem 來(lái)迭代對(duì)象,如果連getitem 都沒有定義,這解釋器就會(huì)報(bào)對(duì)象不是迭代器的錯(cuò)誤:
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)
運(yùn)行結(jié)果:
dog
cat
fish