class One(object): def succ(self, n): return n + 1 def pred(self, n): return n - 1 def add(self, n, m): if n == 0: return m else: return self.succ(self.add(self.pred(n), m)) class Two(One): def __init__(self): print "An object of type Two was created." def mul(self, n, m): if n == 0: return 0 elif n == 1: return m else: return self.add(m, self.mul(self.pred(n), m)) class Three(Two): def __init__(self): print "An object of type Three was created." def pow(self, n, m): if m == 0: if n == 0: return None else: return 1 else: return self.mul(n, self.pow(n, self.pred(m)))