[Tutor] Operator Overloading
Kevin Reeder
reederk at comcast.net
Mon Apr 4 17:13:23 CEST 2005
On Mon, 04 Apr 2005 21:14:21 +1200
John Fouhy <jfouhy at paradise.net.nz> wrote:
> Are you sure you've giving us all the code?
No, I was trying to keep it simple. Anyway, here it is,
class MyList:
def __init__(self, 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 __setitem__(self, index, value):
self.wrapped[index] = value
print self.wrapped
def __getattr__(self, name):
return getattr(self.wrapped, name)
def __repr__(self):
return `self.wrapped`
=====
from mylist import MyList
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 __mul__(self, time):
MyListSub.calls = MyListSub.calls + 1
self.adds = self.adds + 1
return MyList.__mul__(self, time)
def __getitem__(self, offset):
MyListSub.calls = MyListSub.calls + 1
self.adds = self.adds + 1
return MyList.__getitem__(self, offset)
def __len__(self):
MyListSub.calls = MyListSub.calls + 1
self.adds = self.adds + 1
return MyList.__len__(self)
def __getslice__(self, low, high):
MyListSub.calls = MyListSub.calls + 1
self.adds = self.adds + 1
return MyList.__getslice__(self, low, high)
def __setitem__(self, index, value):
MyListSub.calls = MyListSub.calls + 1
self.adds = self.adds + 1
return MyList.__setitem__(self, index, value)
def __getattr__(self, name):
MyListSub.calls = MyListSub.calls + 1
self.adds = self.adds + 1
return MyList.__getattr__(self, name)
def __sub__(self, index):
MyListSub.calls = MyListSub.calls + 1
self.adds = self.adds + 1
return MyList.__sub__(self, index)
def __and__(self, value):
MyListSub.calls = MyListSub.calls + 1
self.adds = self.adds + 1
MyList.__and__(self, value)
def stats(self):
return self.calls, self.adds
More information about the Tutor
mailing list