I have a class that subclasses a list object. Now I need to process the slicing. Of all that I read on the tubes, this needs to be done using the __getitem__ method. At least in Python 2.7+ this is what I use. I did this (see below), but the __getitem__ method __getitem__ not called when I pass the fragment. Instead, a slice is performed and the list is returned. I would like a new instance of myList to return.
Please help me find out what is wrong.
Thanks!
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]
jlconlin
source share