當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python __getitem__()用法及代碼示例


在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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。