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

21 Авг 2019 в 07:07
374 +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
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир