As subclassing list has a problem when using __getitem__, __delitem__ and __setitem__ methods with slices (they don't get called because parent implements __getslice__, __delslice__ and __setslice__ respectively), I've coded this UserList class that is a subclass of list, but overwrites these methods. By subclassing this class, you can overwrite __getitem__ and it will be called correctly for slices.
1 2 3 4 5 6 7 8 9 10 11 12 | class UserListSubclass(list):
def __getslice__(self, i, j):
return self.__getitem__(slice(i, j))
def __setslice__(self, i, j, seq):
return self.__setitem__(slice(i, j), seq)
def __delslice__(self, i, j):
return self.__delitem__(slice(i, j))
# Subclass this class if you need to overwrite __getitem__ and have it called
# when accessing slices.
# If you subclass list directly, __getitem__ won't get called when accessing
# slices as in mylist[2:4].
|