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