8. 索引运算符重载
作用
让自定义类型的对象能够支持索引操作。
索引运算符重载的方法:
方法名
运算符和表达式
说明
__getitem__
(self, item)x = self[item]
索引取值
__setitem__
(self, key, value)self[key] = value
索引的赋值
__delitem__
(self, key)del self[key]
del语句删除索引
示例
# 索引运算符重载 示例
# http://weimingze.com
class Vector3D:
'''用于描述三维向量的类!,x,y,z分别是向量的坐标位置!'''
def __init__(self, x, y, z):
self.x, self.y, self.z = x, y, z
def __repr__(self):
return f'Vector3D({self.x},{self.y},{self.z})'
def __getitem__(self, item):
print('索引取值, item:', item)
def __setitem__(self, key, value):
print(f'索引赋值, key: {key}, value: {value}')
def __delitem__(self, key):
print(f'删除索引, key: {key}')
v1 = Vector3D(1, 2, 3)
print('v1:', v1)
print('v1[0]:', v1[0])
v1[1] = 200
print('v1:', v1)
del v1[100]
运行结果
v1: Vector3D(1,2,3)
索引取值, item: 0
v1[0]: None
索引赋值, key: 1, value: 200
v1: Vector3D(1,2,3)
删除索引, key: 100