在Python中,一切都是對象。在幕後的這些對象上有許多‘ordinary’係統調用方法,這些對於程序員是不可見的。這就是所謂的魔術方法。 python中的魔術方法是運行任何普通python代碼時都會調用的特殊方法。為了區分它們的正常函數,它們周圍有兩個下劃線。
如果要添加a和b,則編寫以下語法:
c = a + b
在內部它稱為:
c = a.__add__(b)
__getitem__()
是Python中的魔術方法,在類中使用時,允許其實例使用[]
(索引器)運算符。假設x是此類的一個實例,那麽x[i]
大致相當於type(x).__getitem__(x, i)
。
方法__getitem__(self, key)
使用符號定義訪問項目時的行為self[key]
。這也是可變和不可變容器協議的一部分。
例:
# Code to demonstrate use
# of __getitem__() in python
class Test(object):
# This function prints the type
# of the object passed as well
# as the object item
def __getitem__(self, items):
print (type(items), items)
# Driver code
test = Test()
test[5]
test[5:65:5]
test['GeeksforGeeks']
test[1, 'x', 10.0]
test['a':'z':2]
test[object()]
輸出:
<class 'int'> 5 <class 'slice'> slice(5, 65, 5) <class 'str'> GeeksforGeeks <class 'tuple'> (1, 'x', 10.0) <class 'slice'> slice('a', 'z', 2) <class 'object'> <object object at 0x7f75bcd6d0a0>
與某些其他語言不同,Python本質上允許您將任何對象傳遞到索引器中。您可能會驚訝於test[1, 'x', 10.0]
實際解析。對於Python解釋器,該表達式等效於此:test.__getitem__((1, 'x', 10.0))
。如您所見,1,‘x’,10.0部分被隱式解析為元組。的test[5:65:5]
表達式使用Python的slice語法。等效於以下表達式:test [slice(5,65,5)]。
這個__getitem__
magic方法通常用於列表索引,字典查找或訪問值範圍。考慮到它的通用性,它可能是Python使用最多的魔術方法之一。
注:本文由純淨天空篩選整理自vanigupta20024大神的英文原創作品 __getitem__() in Python。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。