在Python中实现类似列表的索引访问

47 投票
2 回答
27012 浏览
提问于 2025-04-16 20:20

我想用类似数组的方式来访问一个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)

这是一个非常简单的类,它允许通过索引来访问它的属性。

撰写回答