Override predefined function
class MyList:
def __init__(self, start):
#self.wrapped = start[:]
self.wrapped = []
for x in start: self.wrapped.append(x)
def __add__(self, other):
return MyList(self.wrapped + other)
def __mul__(self, time):
return MyList(self.wrapped * time)
def __getitem__(self, offset):
return self.wrapped[offset]
def __len__(self):
return len(self.wrapped)
def __getslice__(self, low, high):
return MyList(self.wrapped[low:high])
def append(self, node):
self.wrapped.append(node)
def __getattr__(self, name):
return getattr(self.wrapped, name)
def __repr__(self):
return 'self.wrapped'
class MyListSub(MyList):
calls = 0
def __init__(self, start):
self.adds = 0
MyList.__init__(self, start)
def __add__(self, other):
MyListSub.calls = MyListSub.calls + 1
self.adds = self.adds + 1
return MyList.__add__(self, other)
def stats(self):
return self.calls, self.adds
if __name__ == '__main__':
x = MyListSub('A')
y = MyListSub('B')
print x[0]
print x[1:]
print x + ['C']
print x + ['D']
print y + ['E']
print x.stats()
Related examples in the same category