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