凡是在類中定義了這個__getitem__ 方法,那麼它的例項物件(假定為p),可以像這樣
p[key] 取值,當例項物件做p[key] 運算時,會呼叫類中的方法__getitem__。
一般如果想使用索引訪問元素時,就可以在類中定義這個方法(__getitem__(self, key) )。
先用乙個誇張一點的例子來說明這個問題。
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'])
print(data[data.id])
print(data[data.address])
當例項物件通過 運算子取值時,會呼叫它的方法__getitem__,從上面**中輸出二個笑臉可以看出來。一般這樣用
還可以用在物件的迭代上
class
stgetitem:
def__init__(self,text):
self
.text=text
def__getitem__(self,index):
result=
self
.text[index].upper()
return
result
p=stgetitem(
"你是誰")
print(p[0])
forchar
inp:
print(char,end=
' ')
PYTHON類的特殊方法
例項1 python view plain copy coding utf 8 class firstdemo object 這裡是乙個doc a 10 類屬性 def demo self 第乙個方法 pass def demo2 self 第二個方法 pass print firstdemo.di...
Python類的特殊方法
doc描述類的資訊 class foo object 單引號和雙引號都可以 這裡描述類的資訊 def func self passprint foo.doc 這裡描述類的資訊 call物件後面加括號,觸發執行 class foo object defcall self,args,kwargs pri...
Python類的特殊方法
特殊方法,也稱為魔術方法 特殊方法都是使用 開頭和結尾的 特殊方法一般不需要我們手動呼叫,需要在一些特殊情況下自動執行 定義乙個person類 class person object 人類 def init self,name age self.name name self.age age str ...