当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。