Я переопределил __getitem__
встроенного типа list
:
class my_list(list):
def __getitem__(self, index, *args, **kwargs):
value = super().__getitem__(index, *args, **kwargs)
if isinstance(index, slice):
return [v**2 for v in value]
return value**2
и создали его новый экземпляр:
a = my_list((1, 2, 3, 4))
и repr(a)
, и print(a)
выводят одинаковое неизмененное значение [1, 2, 3, 4]
без вызова переопределения __getitem__
. Я ожидаю получить [1, 4, 9, 16]
в обоих этих случаях.
Однако, a[2]
, a[:]
вызывает __getitem__
, и результаты соответственно 9
и [1, 4, 9, 16]
. Как и ожидалось.
Как переопределить один метод для создания согласованного представления моего пользовательского списка? Или какие методы мне нужно переопределить, чтобы охватить все способы получения значений из моего пользовательского списка?