在 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=list
或user_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!")
在python中,list、string、tuple可以通过索引(obj[i])获取元素,就像C++一样。同样的方法有没有类似override operators的方法让用户定义的class'对象能够通过方括号[]?
获取元素例如:
>>>obj = user_class([1,2,4])
>>>obj[0]
1
>>>obj[1]
2
user_class=list
或user_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!")