更新時間:2023年01月12日17時14分 來源:傳智教育 瀏覽次數(shù):
魔法方法就是可以給你的類增加魔力的特殊方法,如果你的對象實現(xiàn) (重載)了這些方法中的某一個,那么這個方法就會在特殊的情況下被 Python 所調(diào)用,你可以定義自己想要的行為,而這一切都是自動發(fā)生的。 它們經(jīng)常是兩個下劃線包圍來命名的(比如 __init__,__lt__),Python 的魔法方法是非常強(qiáng)大的,所以了解其使用方法也變得尤為重要!__init__ 構(gòu)造器,當(dāng)一個實例被創(chuàng)建的時候初始化的方法。但是它并 不是實例化調(diào)用的第一個方法。
__new__才是實例化對象調(diào)用的第一個方法,它只取下 cls 參數(shù),并把 其他參數(shù)傳給 __init__。 __new__很少使用,但是也有它適合的場景,尤其 是當(dāng)類繼承自一個像元組或者字符串這樣不經(jīng)常改變的類型的時候。
__call__ 允許一個類的實例像函數(shù)一樣被調(diào)用 。
__getitem__ 定義獲取容器中指定元素的行為,相當(dāng)于 self[key] 。
__getattr__ 定義當(dāng)用戶試圖訪問一個不存在屬性的時候的行為 。
__setattr__ 定義當(dāng)一個屬性被設(shè)置的時候的行為 。
__getattribute__ 定義當(dāng)一個屬性被訪問的時候的行為 。