Может ли Python класс имитировать поведение массива?

Можно ли в Python 3.x задать класс так, чтобы обращаться к его экземпляру, как к массиву:

class A():
    ...

a = A()
a[1]    # нужно чтобы можно было вот так обращаться к экземпляру класса


В идеале, нужны методы get и set для элементов, получаемых как в коде выше. Не нашел нужных магических методов. Можно как-нибудь это сделать?
  • Вопрос задан
  • 374 просмотра
Решения вопроса 2
@idap
интересуюсь python, latex, linux, ML, AI
Да, конечно может. Определите методы __iter__ и __getitem__. Первый для возможности использовать в цикле типа for i in a, второй для доступа a[i]. Там же рядом есть описание метода __setitem__ и ещё много чего интересного.
Ответ написан
Комментировать
@tplus
Пригласить эксперта
Ответы на вопрос 2
@deliro
Наследуйся от стандартного списка и пиши свои блекджеки и методы.
Ответ написан
@throughtheether
human after all
Не нашел нужных магических методов.

Вам поможет метод __getitem__.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы