专业编程基础技术教程

网站首页 > 基础教程 正文

python索引运算符([])重载示例

ccvgpt 2024-12-11 11:06:34 基础教程 39 ℃

在Python中,索引运算符重载允许重新定义自定义类的索引运算符([]括号)的行为。这样可以使自定义的对象支持索引、切片和多维索引操作。让我们通过示例来了解如何在Python中实现索引运算符重载。

示例1:索引和切片

python索引运算符([])重载示例

class CustomList:
    def __init__(self):
        self.data = [1, 2, 3, 4, 5]
    
    def __getitem__(self, index):
        print(type(index))
        return self.data[index]

my_list = CustomList()

# 索引
print(my_list[2])  # 输出:3

# 切片
print(my_list[1:4])  # 输出:[2, 3, 4]

在此示例中,CustomList类定义了__getitem__方法,该方法在对对象进行索引或切片操作时被调用。__getitem__方法从self.data列表中返回相应的元素。

示例2:多维索引

class Matrix:
    def __init__(self):
        self.data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    
    def __getitem__(self, index):
        print(type(index))
        if isinstance(index, tuple):
            row, col = index
            return self.data[row][col]
        else:
            raise TypeError("无效的索引类型。请提供一个元组(行,列)。")

my_matrix = Matrix()

# 多维索引
print(my_matrix[1, 2])  # 输出:6

在此示例中,Matrix类定义了__getitem__方法,以支持多维索引。它检查索引是否为元组,如果是,则提取行和列值,并从self.data的列表列表中获取相应的元素。

通过在类中实现__getitem__方法,可以根据需要自定义对象的索引运算符的行为,从而使其支持索引、切片和多维索引操作。

注意:如果要支持通过索引运算符([])进行赋值,还可以在类中实现__setitem__方法。

最近发表
标签列表