Python 魔術方法筆記

來源:互聯網
上載者:User

標籤:bubuko   分享   沒有   方法   分享圖片   alt   enc   elf   代碼   

魔術方法總是被__包圍, 如__init__ , __len__都是常見的魔術方法,這裡主要寫一下我遇到的一些魔術方法

setitem

對某個索引值賦值時

即可以進行賦值操作,如

    def __setitem__(self, k, v):        self.put(k, v)

在上述代碼的情況下,可以執行p[‘key‘] = value操作,即將key賦給k,value賦給v,執行put(k, v)函數。所以,__setitem__建立的前提,是要這個函數內的操作本來具有賦值的性質。

getitem

使用索引訪問元素時

這個操作時取值操作,如

    def __getitem__(self, key):        return self.get(key)

在有上述函數的情況下,可以執行z = p[‘key‘] 操作,即將‘key‘傳入get(key)函數中,進行取值。

contain

使用 in 操作測試關係時

當你想要你的對象可以使用in操作時,可以使用這個函數:

def __contains__(self, key):    if self._get(key, self.root):        return True    else:        return False

有了這個函數即可執行: if ‘Northfield‘ in my_zip_tree:

PS:理解魔術函數最重要的就是,函數名稱對應的是一個操作方法的表示,如__contain__( )。如果這個函數裡面什麼都不寫,那麼就算可以執行in操作沒有語法錯誤,那也什麼都不能返回,沒有實際意義。魔術函數重要的還是函數內部的代碼,且這種代碼等同於執行函數名稱對應的操作方式。

最後送一張大圖:

  • Reference: Python 魔術方法指南

Python 魔術方法筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.