Подтвердить что ты не робот

Реализовать доступ к списку как индекс в Python

Я хотел бы иметь доступ к некоторым значениям объекта python с использованием синтаксиса типа массива, то есть:

obj = MyClass()
zeroth = obj[0]
first = obj[1]

Возможно ли это? Если да, как это реализовать в рассматриваемом классе python?

4b9b3361

Ответ 1

Вам нужно написать или переопределить __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)

Это очень простой класс, который позволяет индексировать доступ к его атрибутам.

Ответ 2

Используйте методы __getitem__ и __setitem__.

class MyClass:
    def __getitem__(self, key):
        return some_value_related_to_key

    def __setitem__(self, key, value):
        # set value (if needed)