У меня есть класс, который является подклассом объекта списка. Теперь мне нужно заняться нарезкой. Судя по всему, что я прочитал в интертубах, это должно быть сделано с помощью метода __ getitem __
. По крайней мере, в Python 2.7+, который я использую. Я сделал это (см. Ниже), но метод __ getitem __
не вызывается, когда я передаю фрагмент. Вместо этого выполняется срез и возвращается список. Я хочу вернуть новый экземпляр myList.
Пожалуйста, помогите мне обнаружить, что не так.
Спасибо!
class myList(list):
def __init__(self, items):
super(myList, self).__init__(items)
self.name = 'myList'
def __getitem__(self, index):
print("__getitem__")
if isinstance(index, slice):
print("slice")
return self.__class__(
self[x] for x in range(*index.indices(len(self)))
)
else: return super(myList, self).__getitem__(index)
if __name__ == "__main__":
print("\nI'm tesing out custom slicing.\n")
N = 10
L = myList(range(N))
L3 = L[3]
L02 = L[:2]