在Python中实现类似列表的索引访问
我想用类似数组的方式来访问一个Python对象的某些值,也就是说像这样:
obj = MyClass()
zeroth = obj[0]
first = obj[1]
这可能吗?如果可以的话,怎么在相关的Python类中实现呢?
2 个回答
6
使用 __getitem__
和 __setitem__
这两个方法。
class MyClass:
def __getitem__(self, key):
return some_value_related_to_key
def __setitem__(self, key, value):
# set value (if needed)
70
你需要编写或重写 __getitem__
、__setitem__
和 __delitem__
这几个方法。
举个例子:
class MetaContainer():
def __delitem__(self, key):
self.__delattr__(key)
def __getitem__(self, key):
return self.__getattribute__(key)
def __setitem__(self, key, value):
self.__setattr__(key, value)
这是一个非常简单的类,它允许通过索引来访问它的属性。