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

时间:2018-02-23 09:19:16

标签: python python-3.x object override iterable

在python中,list,string,tuple可以通过使用index(obj [i])得到元素,就像C ++一样。以同样的方式,有任何方法,如覆盖运算符,以使用户定义的类' object能够通过使用square-bracket []?

来获取元素

例如:

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

user_class=listuser_class=tuple无法成为解决方案,因为我必须在此类中添加一系列控制代码。这个班级的工作方式与列表或元组完全不同。

有没有人知道解决方案?

1 个答案:

答案 0 :(得分:1)

您应该在user_class

中实施__getitem__方法
class user_class:
    def __init__(self, lst):
        self.values = lst
    def __getitem__(self, it):
        return self.values[it]

或者它可以是某些基类型的子类,如list:

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