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

分类: 计算机技术
推荐阅读:
Pyside6.QtWidgets.QWidget详细教程 QWidget从窗口系统接收鼠标、键盘和其它事件,并在屏幕上绘制自己;通常它是矩形的,拥有一个标题栏和一个空白框架;
Qt Designer和PyQt的关系 Qt是一个非常强大的跨平台图形用户界面应用程序开发框架;而Qt Designer是用于设计UI界面的工具,你可以使用它通过拖拽和点击完成复杂的界面设计。
使用python求解极限 要使用Python求解一个极限,可以使用Python中的SymPy库;
Rust实现字符串MD5加密 本文将使用Rust语言rust-crypto库实现字符串的MD5加密;
SQL重命名数据库 当您需要更改数据库名称时,将使用RENAME DATABASE;
Go语言中预定义常量iota的用法 iota可以被认为是一个可被编译器修改的常量,在每个const关键字出现时被重置为0,在下一个const出现之前,每出现一次iota,其所代表的数字会自增1.