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