I want to extend functionality of class "list" and add custom handlers for events: "Add new item to list" and "Remove item from list". For this task i don't want use composition, better is inheritence.
What i tried do:
class ExtendedList(list):
    def append(self, obj):
        super(ExtendedList, self).append(obj)
        print('Added new item')
    def extend(self, collection):
        if (hasattr(collection, '__iter__') or hasattr(collection, '__getitem__')) and len(collection)>0:
            for item in collection:
                self.append(item)
    def insert(self, index, obj):
        super(ExtendedList, self).insert(index, obj)
        print('Added new item')
    def remove(self, value):
        super(ExtendedList, self).remove(value)
        print('Item removed')
But it don't work correctly. I can't catch all adding and removing events. For example:
collection = ExtendedList()
collection.append('First item')
# Out: "Added new item\n"; collection now is: ['First item']
collection.extend(['Second item', 'Third item'])
# Out: "Added new item\nAdded new item\n"; collection now is: ['First item', 'Second item', 'Third item']
collection += ['Four item']
# Don't out anythink; collection now is: ['First item', 'Second item', 'Third item', 'Four item']
collection.remove('First item')
# Out: "Item removed\n"; collection now is: ['Second item', 'Third item', 'Four item']
del collection[0:2]
# Don't out anythink; collection now is: ['Four item']
collection *= 3
# Don't out anythink; collection now is: ['Four item', 'Four item', 'Four item']
What is right way to extend class "list" for my situation? Thanks for help.
 
     
     
     
     
    