08 __getitem__魔术方法

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容