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 Scripts with Example Source Code in same category :
-
-
-
|
|