在 Python3 如何让用户定义的 class 对象可以通过索引( obj[ i ] )获取元素?

In Python3 How to make a user defined class object can get element by index ( obj[ i ] )?

在python中,list、string、tuple可以通过索引(obj[i])获取元素,就像C++一样。同样的方法有没有类似override operators的方法让用户定义的class'对象能够通过方括号[]?

获取元素

例如:

>>>obj = user_class([1,2,4])
>>>obj[0]
1
>>>obj[1]
2

user_class=listuser_class=tuple的方式都不能解决,因为我要在这个class里面加入一系列的控制代码。 class 的工作方式与列表或元组完全不同。

有谁知道解决方法吗?

您应该在 user_class 中实现一个 __getitem__ 方法。

class user_class:
    def __init__(self, lst):
        self.values = lst
    def __getitem__(self, it):
        return self.values[it]

或者它可以是某些基本类型的子类,例如列表:

class user_class(list):
    # your control code goes here
    def shout(self):
        print("AAA!")