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)
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息