class _CunningList list список который будет сообщать объекту переданн

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class _CunningList(list):
u"""список, который будет сообщать объекту, переданному при создании,
что содержимое было изменено"""
def __init__(self, callback):
self.callback = callback
def exec_method(self, method, args, kwargs):
method = getattr(super(_CunningList, self), method)
method(*args, **kwargs)
self.callback()
def __add__(self, *args, **kwargs):
self.exec_method('__add__', args, kwargs)
def __iadd__(self, *args, **kwargs):
self.exec_method('__iadd__', args, kwargs)
def __setitem__(self, *args, **kwargs):
self.exec_method('__setitem__', args, kwargs)
def __delitem__(self, *args, **kwargs):
self.exec_method('__delitem__', args, kwargs)
def __delslice__(self, *args, **kwargs):
self.exec_method('__delslice__', args, kwargs)
def __setslice__(self, *args, **kwargs):
self.exec_method('__setslice__', args, kwargs)
def append(self, *args, **kwargs):
self.exec_method('append', args, kwargs)
def pop(self, *args, **kwargs):
self.exec_method('pop', args, kwargs)
def remove(self, *args, **kwargs):
self.exec_method('remove', args, kwargs)
def insert(self, *args, **kwargs):
self.exec_method('insert', args, kwargs)
def extend(self, *args, **kwargs):
self.exec_method('extend', args, kwargs)