1. 程式人生 > >python四個魔法方法__len__,__getitem__,__setitem__,__delitem__

python四個魔法方法__len__,__getitem__,__setitem__,__delitem__

python中除了可以使用內建的型別,如list,tuple,dict,還可以建立自己的物件來實現像這些內建型別的訪問,不過需要在定義類的時候對一些魔法方法逐一實現。

如下:

class DictDemo:
      def __init__(self,key,value):
            self.dict = {}
            self.dict[key] = value
      def __getitem__(self,key):
            return self.dict[key]
      def __setitem__(self,key,value):
            self.dict[key] = value
dictDemo = DictDemo('key0','value0')
print(dictDemo['key0']) #value0
dictDemo['key1'] = 'value1'
print(dictDemo['key1']) #value1

上面的物件就相當於自己建立了一個內建型別相似的字典,當例項中有類似字典的操作的時候

比如:

dictDemo1 = {"key0":"value0"}
print(dictDemo1["key0"]) #value0

例項dictDemo["key0"]就類似上面的的操作,則會自動呼叫類中定義的方法__getitem__,輸出在該方法返回的值

再看看dictDemo["key1"] = "value1",就是字典的操作,會自動呼叫類中定義的方法__setitem__,來設定相應的值

還有一個__del__,就是當我們要刪除一個元素的時候呼叫(魔法方法會自動呼叫)

 __len__ 如下:

當要使用內建函式len(),而引數是DictDemo的例項的時候,那一定要實現型別中的__len__()方法

class DictDemo:
    def __init__(self,key,value):
        self.dict = {}
        self.dict[key] = value
    def __getitem__(self,key):
        return self.dict[key]
    def __setitem__(self,key,value):
        self.dict[key] = value
    def __len__(self):
        return len(self.dict)
dictDemo = DictDemo('key0','value0')
print(dictDemo['key0']) #value0
dictDemo['key1'] = 'value1'
print(dictDemo['key1']) #value1
print(len(dictDemo)) #2

上述就是這四個魔法方法的簡單介紹。endingPos +……+#

相關推薦

python魔法方法__len__,__getitem__,__setitem__,__delitem__

python中除了可以使用內建的型別,如list,tuple,dict,還可以建立自己的物件來實現像這些內建型別的訪問,不過需要在定義類的時候對一些魔法方法逐一實現。 如下: class DictDemo: def __init__(self,key,valu

Python深度學習 魔法函式__len____getitem__

對於魔法函式__len__來說它可以使我們對於一個類的例項使用len()方法, __getitem__方法則可以像列表一樣操作 class Person: def __init__(self

[小甲魚]入門學習python筆記 【魔法方法

實例化 魔法 sel width 對象 重寫 pre body wid //__new__(cls[,....]) //對象實例化調用的第一個方法,它的第一個參數是這個類,而其他參數會直接傳遞給__init__()方法 //需要在基類的基礎上對其進行修改時重寫__new_

python類之魔法方法

python類之魔法方法: class A(object): def __init__(self,x): self.x = x def __neg__(self): print('-v') def __pos__(self):

ps--提升字體排版的美感有效方法

提升 技術分享 img 超過 註意 http 文字 mage 圖片 一,文字的擺放位置 (字體的選擇不要超過三種,分散註意力) ps--提升字體排版的美感四個有效方法

python裡的魔法方法1(構造與析構)

魔法方法——構造與析構 1、python程式設計的魔法方法: (1)魔法方法總是被雙下劃線包圍,例如__init__; (2)魔法方法是面向物件的python的一切。 2、__new__(class[,…])魔法方法 主要用來重新修改和對於實際類()裡面所帶引數的修改,__new__ 方法主要任務是

python中的魔法方法及屬性

這裡介紹一些比較常用的魔法方法: a.何為魔法屬性? 魔法屬性和魔法方法是python內建的一些屬性和方法。代表著特殊意義, 命名時會在前後加兩個下劃線,在執行特定的操作時,系統會自動呼叫 1.__doc__魔法方法:表

python 3 __str__魔法方法總結

Python3中只要類中的方法名格式為:__方法名__ 都是為特殊的方法,可以稱為"魔法"方法 當我們在程式碼中呼叫了print(類),就會呼叫__str__方法裡面的值 注意該函式必須有返回值,為字串形式 例如如下程式碼: class Cat: "

jedis set 的過載方法

方法定義如下: 1、String set(String key, String value) 2、String set(String key, String value, String nxxx) 3、String set(String key, String value, Str

多執行緒同步互斥的實現方法

一、引言 這篇文章記錄是來源於Windows多執行緒系列的學習筆記,表為原創,實為轉載文章,只是為了讓自己學的明白,稍微整理了下而已,在此向“MoreWindows”大神致敬! 二、關鍵段與互斥量Mutex 名稱 建立或初始化 銷燬

python__getitem__, __setitem__, __delitem__的使用

參考: 伯樂地址 用於索引操作,如字典。以上分別表示獲取、設定、刪除資料 #Python __doc__ class C(object): """ Holy Shit What The Fu

徹底搞懂自定義控制元件中的構造方法

    在上一篇部落格動手實現餅圖控制元件寫完以後,有些小夥伴說講得不夠細,建議從最基本開始講起,比如建構函式都是什麼?我覺得說得很有道理,正好自己也不夠了解自定義控制元件中的4個構造方法的具體呼叫時機和它們各自的引數作用,今天終於有時間把這部分內容進行學習整理,順便分享給那

Python中的魔法方法(Magical Methond)

在python中,魔法方法是一種可以給類增加魔力的特殊方法,他們被雙下橫線所包圍,他們是面向物件的python的一切。python中的魔法方法可以在類定義的時候使用,如果你的物件實現或者過載了這些方法中的某一個,那麼這個方法會在特殊的時候被python所呼叫,在這個時候,你可

從 View 的構造方法說起

View 類的四個建構函式 寫過自定義 View 的都知道,View 有四個建構函式,一般大家都知道第一個構造方法是簡單的在程式碼中new View 的時候呼叫的,第二個構造方法使用最廣泛,是對應的生成 xml 中定義的 View 的時候呼叫的。剩下的兩個構造方法,大家瞭解的就比較少了。一般在自定義

__getitem__\__setitem__\__delitem__

.data del ini sdf () elf val def 執行 class Foo(object): def __init__(self): self.data = {} def __getitem__(self, key):

python中的幾高階問題詳解(__init__,裝飾器執行步驟,@staticmethod和@classmethod區別,單例模式,魔法方法,object繼承與不繼承區別)

第一個問題,init 在定義一個類時,什麼時候用__init__函式,什麼時候不用,用不用有什麼區別? 首先__init__是為了初始化用的,但是初始化的時候不一定要用這個,直接定義也是可以的,比如 class A(object): test_a = '123' 而我們用__

python列出資料夾下所有檔案的方法

#方法1:使用os.listdir import os for filename in os.listdir(r'c:\windows'):     print filename   #方法2:使用glob模組,可以設定檔案過濾 import glob for filename in glob.glob(r'

pythonpython魔法方法(待填坑)

絕對值 tle init cls -m del __init__ 另一個 trunc 參考博文:http://pyzh.readthedocs.io/en/latest/python-magic-methods-guide.html 參考博文英文原版:http://www

python魔法方法詳解

返回 call __init__ and -m 描述 nbsp shift 賦值 文章來源:http://blog.csdn.net/koko66/article/details/42709279 據說,Python 的對象天生擁有一些神奇的方法,它們總被雙下劃線所包圍

成為百萬富翁的方法

version 如何賺錢 是你 廣告 完整 新的 快的 必須 給他 重讀《小狗錢錢》,發現一個不小的秘密。 今天文章的開頭,我想講一個美國小男孩變成百萬富翁的故事。 這個小男孩叫達瑞,在他8歲的時候,有一次偶然的機會,他向一位非常成功的商人請教如何賺錢,商人給了