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)