Реализовать доступ к индексам в Python - PullRequest
23 голосов
/ 27 июня 2011

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

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

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

Ответы [ 2 ]

39 голосов
/ 27 июня 2011

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

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

3 голосов
/ 27 июня 2011

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

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

    def __setitem__(self, key, value):
        # set value (if needed)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...