Реализовать доступ к списку как индекс в Python
Я хотел бы иметь доступ к некоторым значениям объекта python с использованием синтаксиса типа массива, то есть:
obj = MyClass()
zeroth = obj[0]
first = obj[1]
Возможно ли это? Если да, как это реализовать в рассматриваемом классе python?
Ответы
Ответ 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)