python魔法函數(二)之__getitem__、__len__、__iter__


魔法函數會增強python類的類型,獨立存在
__getitem
class Company:
    def __init__(self, employees):
        self.employees = employees

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


company = Company(['a', 'b', 'c'])
for val in company:
    print(val)
company1 = company[:2]
for val in company1:
    print(val)

結果:
a
b
c
a
b
for循環迭代時,如果對象不具有iterator接口,就會調用類的__getitem__魔法函數(前提是定義了),上述的__getitem__把類變成了序列,所以可切片可遍歷
len

len()方法是為了能讓class作用於len()函數。

iter

如果一個類想被用於for ... in循環,類似list或tuple那樣,就必須實現一個__iter__()方法,該方法返回一個迭代對象,然后,Python的for循環就會不斷調用該迭代對象的__next__()方法拿到循環的下一個值,直到遇到StopIteration錯誤時退出循環。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM