python 魔法方法 getitem

2022-08-01 04:57:16 字數 1596 閱讀 3203

在字典和列表中我們經常使用來獲取字典中的值或者列表中的元素,是因為字典和列表都內建了__getitem方法。

"

__getitem__"in

(dir(list))

>>>true

"__getitem__"in

(dir(dict))

>>>true

我們自定義乙個類,當例項物件通過運算子取值時,會自動呼叫它的__getitem__方法

class

database:

def__init__

(self,id,address):

#初始化方法

self.id=id

self.address=address

self.d=

def__getitem__

(self,key):

return self.d.get(key,"

default")

data=database(1,"

192.168.1.1")

print(data['hi'

])>>>"

default"#

data.d中無 「hi」鍵, 返回 「default」

print

(data[data.id])

>>>1

print

(data[data.address])

>>>"

192.168.1.1

"

序列可以迭代,即 for i in p

內建方法__getitem__(self, index)同樣可以實現物件迭代(從索引0開始)。

class

database:

def__init__

(self,id,address):

#初始化方法

self.id=id

self.address=address

self.d=

def__getitem__

(self,key):

assert key < 10

print(key) #

列印索引值

return self.d.get(key,"

default

") #

返回字典value,預設為default

data=database(1,"

192.168.1.1")

for i in

data:

print

(i)>>>0

default

11 #

字典中含有key1, 輸出value1

2default

3default

4default

5default

6default

7default

8default

9default

實現__iter__和__next__同樣的效果

i_data =iter(data)

next(i_data)

>>>0

default

Python魔法方法 基本的魔法方法

new cls 1.new 是在乙個物件例項化時候所呼叫的第乙個方法 2.他的第乙個引數是這個類,其他的引數是用來直接傳遞給 init 方法 3.new 決定是否使用該 init 方法,因為.new 可以直接呼叫其他類的構造方法,或者返回別的例項物件來作為本類的例項,如果 new 沒有返回例項物件,...

python 魔法方法

魔法方法具有一定的特徵 new cls class capstr str def new cls,string 修改新類裡的new方法,需傳入乙個引數 string string.upper return str.new cls,string 用父類裡的new方法進行返回,直接飯後構造後的物件def...

python魔法方法

python魔術方法是特殊方法的暱稱。它是簡單而又強大,為了被python直譯器呼叫而存在的方法。python提供豐富的元物件協議,讓語言的使用者和核心開發者擁有並使用同樣的工具 例子引用 流暢的python 一摞python風格的紙牌 import collections namedtuple用來...