Python中__getitem__()方法和索引器[]的详细用法

在本文中将详细描述如何使用Python为自定义对象使用索引器和类的__getitem__()方法;

索引器

在Python中,可使用索引器运算符[ ]来访问对象元素,例如字典mydict['name']

mydict['name']大致等同于mydict.__getitem__('name')

python允许你将任何对象传递到索引器中,例如:

test[5] #int 类型
test[2:10:-1] #切片
test[1:'string':object()] #任意类型的切片
test['name'] #字符串
test[123,'name',object,1,2,3,4,5] #任意数量、类型的参数

当传递给索引器的参数不止一个时,那么这些参数会被隐式的转换成元组;

比如test[1,'name']等同于 test[(1,'name')];而切片 test[1:2:3] 等同于test[slice(1,2,3)]

__getitem__()方法

任意类都可为其定义__getitem__()方法,该方法应定义一个参数用于接收传入到索引器的值;

该方法应返回一个值,省略则返回None;

示例代码

class Demo:

    def __getitem__(self,items):
        print(type(items),'---',items)
        if type(items) == int:
            return 123*2

test = Demo()

test[123]
test[1:10:-1]
test[345:"hello":object]
test[1,2,3,4,5,"string",print]
print("返回值为:",test[123])

程序输出

<class 'int'> --- 123
<class 'slice'> --- slice(1, 10, -1)
<class 'slice'> --- slice(345, 'hello', <class 'object'>)
<class 'tuple'> --- (1, 2, 3, 4, 5, 'string', <built-in function print>)
<class 'int'> --- 123
返回值为: 246

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/python-getitem.html

分类: 计算机技术
推荐阅读:
C语言实现斐波那契数列 对于斐波那契数列,其下一个数字是前两个数字的和,例如:0、1、1、2、3、5、8、13、21等等;斐波那契数列的前两个数为0和1;使用C语言实现斐波那契数列的方法有两种,递归和无递归;
Python callable()函数 在 Python 中,callable() 是一个内置函数,用于检查给定对象是否是可调用的。如果对象是可调用的,则返回 True,否则返回 False。
C语言islower()函数:判断字符是否为小写字母 islower()是C语言标准库中的一个函数,用于检查一个字符是否为小写字符;如果传入的字符参数是小写字母,则返回非0值,否则返回0;
Python实现线性搜索(linear search) 比如说我有数组data,1000个元素,要从里面找x;线性搜索,就是从头找到尾,速度最慢,但是适用性最广。
Rust assert宏的用法 在 Rust 中,assert宏用于在运行时检查条件是否满足;条件为true时,程序会正常执行,不会发生任何错误或中断,条件为false时,程序会panic,并在控制台输出相应的错误消息;
Python complex()函数 在Python中,complex()函数用于创建一个复数对象,它可以接受两个参数,表示复数的实部和虚部,也可以只传入一个参数,此时表示复数的实部为该参数,虚部为0。