Может ли Python класс имитировать поведение массива? Можно ли в Python 3.x задать класс так, чтобы обращаться к его экземпляру, как к массиву:class A():
...
a = A()
a[1] # нужно чтобы можно было вот так обращаться к экземпляру класса
В идеале, нужны методы get и set для элементов, получаемых как в коде выше. Не нашел нужных магических методов. Можно как-нибудь это сделать?

21 Авг 2019 в 07:07
241 +1
0
Ответы
1

Да, в Python можно создать класс, который имитирует поведение массива. Для этого нужно определить методы __getitem__ и __setitem__ в вашем классе.

Пример:

class Array():
def __init__(self):
self.data = []
def __getitem__(self, index):
return self.data[index]
def __setitem__(self, index, value):
self.data[index] = value
a = Array()
a.data = [1, 2, 3, 4, 5]
print(a[1]) # Выведет 2
a[1] = 10
print(a[1]) # Выведет 10

Теперь у вас есть класс Array, который можно использовать как массив и обращаться к его элементам как к элементам массива. Управление элементами массива осуществляется через методы __getitem__ и __setitem__.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 005 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир