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)