title: How to intercept instance method calls?
body: <p>I am looking for a way to intercept instance method calls in class <code>MyWrapper</code> below: </p>
  
  <pre><code>class SomeClass1:
      def a1(self):
          self.internal_z()
          return "a1"
      def a2(self):
          return "a2"
      def internal_z(self):
          return "z"
  
  class SomeClass2(SomeClass1):
      pass
  
  class MyWrapper(SomeClass2):
  
      # def INTERCEPT_ALL_FUNCTION_CALLS():
      #      result = Call_Original_Function()
      #      self.str += result  
      #      return result  
  
  
      def __init__(self):
          self.str = ''
      def getFinalResult(self):
          return self.str
  
  x = MyWrapper()
  x.a1()
  x.a2()
  </code></pre>
  
  <p>I want to intercept all function calls make through my wrapper class. In my wrapper class I want to keep track of all the result strings.</p>
  
  <pre><code>result = x.getFinalResult()
  print result == 'a1a2'
  </code></pre>