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语言toupper()函数:将字符转换成大写 toupper()是C语言标准库中的一个函数,用于将一个字符转换成对应的大写形式;如果传入的字符参数是一个小写字母,tolower()函数会返回其对应的大写字母;如果参数不是小写字母,则原封不动的返回;
Python __import__()函数 __import__() 函数是一个高级函数,用于动态地导入模块。与 import 语句不同,__import__() 函数可以在运行时动态地导入模块,使得程序可以更加灵活地处理模块的导入。
Python使用集合实现内容去重 有这么一个场景,某个文件用于记录人名(也可以是URL或者其他的),编辑发现,出现了重复的内容。那么我们如何使用Python来进行去重呢?
Python breakpoint()函数 breakpoint()是 Python 3.7 中新增的一个调试工具,它是一个内置函数,可以在程序执行过程中插入一个断点,让程序停在该处等待调试器的进一步命令。
Rust最新版安装教程 首先,通过 Rust 官方网站获取最新版的安装包;根据你的系统类型,选择下载32位或64位的rustup;这里需要提醒的是,rustup只是rust的一个配置安装工具,它需要联网运行;
Golang一次性读取文件 从磁盘读取文件内容是I/O编程的基础;几乎所有编程语言实现起来都很简单,Golang也不例外: