python __getitem__ 魔法方法

Python的魔法方法__getitem__ 可让对象实现迭代功能,这样就可使用for...in... 来迭代该对象。python

在用 for..in.. 迭代对象时,若是对象没有实现 __iter__ __next__ 迭代器协议,Python的解释器就会去寻找__getitem__ 来迭代对象,若是连__getitem__ 都没有定义,解释器就会报对象不是迭代器的错误:code

class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list

company = Company(["tom", "bob", "jane"])
for em in company:
    print(em)
TypeError: 'Company' object is not iterable

而定义了这个魔法方法后,这个类或者这个类对象就变成了一个能够迭代对象,就能够正常迭代了。对象

class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list

    def __getitem__(self, item):
        return self.employee[item]


company = Company(["tom", "bob", "jane"])
for em in company:
    print(em)
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息