Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- def dump_func(fn):
- def dump(self, b):
- print('\t%s.%s %s %s' % (
- fn.__name__,
- self.__class__.__name__,
- self,
- b))
- return fn(self, b)
- return dump
- class mybase(object):
- def __init__(self):
- self.num = None
- def __str__(self):
- return '%s(%s)' % (
- self.__class__.__name__,
- self.num)
- @dump_func
- def __rmul__(self, b):
- return self.__mul__(b)
- class myint(mybase):
- def __init__(self, num):
- self.num = num
- @dump_func
- def __mul__(self, b):
- if isinstance(b, myint):
- return myint(self.num+'*'+b.num)
- return NotImplemented
- class myfloat(mybase):
- def __init__(self, num):
- self.num = num
- @dump_func
- def __mul__(self, b):
- print('\tmul.f', self, b)
- if isinstance(b, myint):
- return myfloat(self.num+'*'+b.num)
- if isinstance(b, myfloat):
- return myfloat(self.num+'*'+b.num)
- return NotImplemented
- class mydouble(mybase):
- def __init__(self, num):
- self.num = num
- @dump_func
- def __mul__(self, b):
- print('\tmul.f', self, b)
- if isinstance(b, myint):
- return mydouble(self.num+'*'+b.num)
- if isinstance(b, myfloat):
- return mydouble(self.num+'*'+b.num)
- if isinstance(b, mydouble):
- return mydouble(self.num+'*'+b.num)
- return NotImplemented
- i = myint('1')
- f = myfloat('2')
- d = mydouble('3')
- for x in [i, f, d]:
- for y in [i, f, d]:
- print(x*y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement