Mega Code Archive

 
Categories / Python / Class
 

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()