python中的特殊方法 getitem

2021-10-03 04:53:42 字數 1239 閱讀 1075

python中的特殊方法 __getitem__()

原創solarzhou 最後發布於2019-07-19 14:08:37 閱讀數 1240  收藏

展開特殊方法----getitem()

python的特殊方法__getitem_() 主要作用是可以讓物件實現迭代功能。我們通過乙個例項來說明。

定義乙個sentence類,通過索引提取單詞。

import re

re_word = re.compile(r'\w+')

class sentence:

def __init__(self, text):

self.text = text

self.words = re_word.findall(text)  # re.findall函式返回乙個字串列表,裡面的元素是正規表示式的全部非重疊匹配

def __getitem__(self, index):

return self.words[index]  12

3456

78測試》 s = sentence('the time has come')

>>> for word in s:

print(word)

thetime

hascome

>>> s[0]

'the'

>>> s[1]

'time'12

3456

78910

1112

通過測試發現,示例 s 可以正常迭代。但是沒有定義 getitem() 測試則會報錯, typeerror: '***' object is not iterable 。

序列可以迭代

我們都知道序列是可以迭代,下面具體說明原因。

直譯器需要迭代物件x時, 會自動呼叫iter(x)方法。內建的 iter(x) 方法有以下作用

檢查物件是否實現了__inter__ 方法,如果實現了就呼叫它(也就是我們偶爾用到的特殊方法過載),獲取乙個迭代器。

如果沒有實現iter()方法, 但是實現了 __getitem__方法,python會建立乙個迭代器,嘗試按順序(從索引0開始,可以看到我們剛才是通過s[0]取值)獲取元素。

如果嘗試失敗,python丟擲typeerror異常,通常會提示typeerror: '***' object is not iterable。

任何python序列都可迭代的原因是,他們都實現了__getitem__方法。其實,標準的序列也都實現了 __iter__方法。

python字典中get()方法

下述 皆由jupyter notebook軟體進行操作 非jupyter notebook軟體注意格式轉換 描述python 字典 dictionary get 函式返回指定鍵的值,如果值不在字典中返回預設值。語法get 方法語法 dict.get key,default 引數key 字典中要查詢的...

python類中的特殊方法

python類特殊方法 方法功能說明 new 類的靜態方法,用於確定是否建立物件 init 建構函式,生成物件時呼叫 del 析構函式,釋放物件時呼叫 add sub mul truediv floordiv mod pow repr 列印,轉換 setitem 按照索引賦值 getitem 按照索...

python中的特殊方法的含義

表 13.4 用來定製類的特殊方法 基本定製型 描述 c.init self arg1,構造器 帶一些可選的引數 c.new self arg1,構造器 帶一些可選的引數 通常用在設定不變資料型別的子類。c.del self 解構器 c.str self 可列印的字元輸出 內建 str 及 prin...