Advertisement
Guest User

Untitled

a guest
Dec 21st, 2014
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.64 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. def dump_func(fn):
  4.     def dump(self, b):
  5.         print('\t%s.%s %s %s' % (
  6.             fn.__name__,
  7.             self.__class__.__name__,
  8.             self,
  9.             b))
  10.         return fn(self, b)
  11.     return dump
  12.  
  13. class mybase(object):
  14.     def __init__(self):
  15.         self.num = None
  16.  
  17.     def __str__(self):
  18.         return '%s(%s)' % (
  19.             self.__class__.__name__,
  20.             self.num)
  21.  
  22.     @dump_func
  23.     def __rmul__(self, b):
  24.         return self.__mul__(b)
  25.  
  26. class myint(mybase):
  27.     def __init__(self, num):
  28.         self.num = num
  29.  
  30.     @dump_func
  31.     def __mul__(self, b):
  32.         if isinstance(b, myint):
  33.             return myint(self.num+'*'+b.num)
  34.         return NotImplemented
  35.  
  36. class myfloat(mybase):
  37.     def __init__(self, num):
  38.         self.num = num
  39.  
  40.     @dump_func
  41.     def __mul__(self, b):
  42.         print('\tmul.f', self, b)
  43.         if isinstance(b, myint):
  44.             return myfloat(self.num+'*'+b.num)
  45.         if isinstance(b, myfloat):
  46.             return myfloat(self.num+'*'+b.num)
  47.         return NotImplemented
  48.  
  49. class mydouble(mybase):
  50.     def __init__(self, num):
  51.         self.num = num
  52.  
  53.     @dump_func
  54.     def __mul__(self, b):
  55.         print('\tmul.f', self, b)
  56.         if isinstance(b, myint):
  57.             return mydouble(self.num+'*'+b.num)
  58.         if isinstance(b, myfloat):
  59.             return mydouble(self.num+'*'+b.num)
  60.         if isinstance(b, mydouble):
  61.             return mydouble(self.num+'*'+b.num)
  62.         return NotImplemented
  63.  
  64. i = myint('1')
  65. f = myfloat('2')
  66. d = mydouble('3')
  67.  
  68. for x in [i, f, d]:
  69.     for y in [i, f, d]:
  70.         print(x*y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement