python類中系統(tǒng)自定義函數(shù)

標(biāo)簽: python類 雙下劃線特殊函數(shù)


今天遇到python類內(nèi)部系統(tǒng)以雙下劃線開頭和結(jié)尾的情況,特去學(xué)習(xí)一部分的應(yīng)用情況,順便記錄一下。python 的OOP編程中,每個類擁有一些系統(tǒng)特殊定義的函數(shù),比如__init__表示初始化類,相當(dāng)于構(gòu)造函數(shù),建立對象時候會先調(diào)用這個方法來初始化一些成員變量。__del__表示析構(gòu)函數(shù),就是對象不再存在于作用空間時,會調(diào)用這個函數(shù)來釋放空間。今天要記錄兩個比較特殊雙下劃線的函數(shù):__getitem____contains__:

1、__getitem__、__contains__函數(shù)####

  • __getitem__函數(shù)表示通過索引獲得數(shù)據(jù),相當(dāng)于data[key],通過在類中重寫這個函數(shù),我就可以使用該類的對象obj[key]來直接操作
  • __contains__函數(shù)在類的對象使用 in 和 not in時可以返回TRUE或者False。

2、代碼####

class DoubleUnderline():
    def __init__(self, d=None):
        self.data = dict()
        self.data = d

    def __getitem__(self, key):
        print 'use __getitem__'
        return self.data[key]

    def __contains__(self, item):
        print 'use __contains__'
        return item in self.data


def main():
    data = dict()
    names = []
    for i in range(1, 5):
        names.append(str(i))
    val = 'a'
    for name in names:
        data[name] = val
        val = val + val
    dbline1 = DoubleUnderline(data) #類對象
    print dbline1['2']
    str1 = '3'
    print str1 in dbline1


if __name__ == "__main__":
    main()

3、輸出結(jié)果####

use __getitem__
aa
use __contains__
True

4、使用環(huán)境####

一般對于dict詞典數(shù)的應(yīng)用比較合理,data[key]和 in、not in 對于詞典數(shù)來說應(yīng)用比較靈活。

5、其他類內(nèi)部神奇函數(shù)如下鏈接####

Python 的神奇方法指南

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容