title: Python Introspection: How to get varnames of class methods?
body: <p>I want to get the names of the keyword arguments of the methods of a class. I think I understood how to get the names of the methods and how to get the variable names of a specific method, but I don't get how to combine these:</p>
  
  <pre><code>class A(object):
      def A1(self, test1=None):
          self.test1 = test1
      def A2(self, test2=None):
          self.test2 = test2
      def A3(self):
          pass
      def A4(self, test4=None, test5=None):
          self.test4 = test4
          self.test5 = test5
  
  a = A()
  
  # to get the names of the methods:
  
  for methodname in a.__class__.__dict__.keys():
      print methodname
  
  # to get the variable names of a specific method:
  
  for varname in a.A1.__func__.__code__.co_varnames:
      print varname
  
  # I want to have something like this:
  for function in class:
      print function.name
      for varname in function:
          print varname
  
  # desired output:
  A1
  self
  test1
  A2
  self
  test2
  A3
  self
  A4
  self
  test4
  test5
  </code></pre>
  
  <p>I will have to expose the names of the methods and their arguments to an external API. I have written a twisted app to link to the mentioned api and this twisted app will have to publish this data via the api.</p>
  
  <p>So, I think I will use something like:</p>
  
  <pre><code>for methodname in A.__dict__.keys():
  if not methodname.startswith('__'):
      print methodname
      for varname in A.__dict__[methodname].__code__.co_varnames:
          print varname
  </code></pre>
  
  <p>Once, the surroundings get more stable I will think about a better solution.</p>