Может ли Python класс имитировать поведение массива? Можно ли в Python 3.x задать класс так, чтобы обращаться к его экземпляру, как к массиву:class A(): ... a = A() a[1] # нужно чтобы можно было вот так обращаться к экземпляру класса В идеале, нужны методы get и set для элементов, получаемых как в коде выше. Не нашел нужных магических методов. Можно как-нибудь это сделать?
Теперь у вас есть класс Array, который можно использовать как массив и обращаться к его элементам как к элементам массива. Управление элементами массива осуществляется через методы __getitem__ и __setitem__.
Да, в 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__.