title: Exposing arbitrary methods names in a python class for an IDE to read
body: <p>The situation is this. Suppose you</p>
  
  <pre><code>from nastymodule import NastyObject1, NastyObject2, NastyObject3
  </code></pre>
  
  <p>and this <code>NastyObject</code>'s under the hood have a weird implementation that does not cleanly expose its methods due to an inextricable maze of interfaces (COM, dll calls and the likes), so the IDE is not able to suggest them. From the documentation, you read that <code>NastyObject1</code> has a method <code>do_thing</code>, <code>NastyObject2</code> has a method <code>do_other_thing</code>, and in fact</p>
  
  <pre><code>NO1 = NastyObject1()
  res = NO1.do_thing()
  NO2 = NastyObject2()
  res = NO2.do_other_thing()
  </code></pre>
  
  <p>perfectly works as documented. The only problem is that, as I said, the IDE does not know, due to the obscure implementation, of this method <code>do_thing</code>, or any other methods of that class. Now, for reasons I have to write a <strong>unique</strong> <code>NstObjWrapper</code> class for <strong>all</strong> these <code>NastyObject</code>'s, capable of dynamically exposing these methods.</p>
  
  <p>Keep in mind that I already wrote <code>NstObjWrapper</code>'s <code>__getattr__</code>, so that</p>
  
  <pre><code>NOW1 = NstObjWrapper('NastyObject1')
  res = NOW1.do_thing()
  NOW2 = NstObjWrapper('NastyObject2')
  res = NOW2.do_other_thing()
  </code></pre>
  
  <p><strong>already works</strong>; I only need to find a way to dynamically make IDEs (and any kind of class inspectors) aware that <code>NOW1</code> has a <code>do_thing</code> method and <code>NOW2</code> has a <code>do_other_thing</code> method. </p>
  
  <p><code>NstObjWrapper</code> can be, if necessary, informed of the methods of the NastyObject's through an exhaustive, hardcoded dict:</p>
  
  <pre><code>methods_dict = {'NastyObject1': ['do_thing', ......]
                  'NastyObject2': ['do_other_thing', .......]
                  'NastyObject3': [.......]}
  </code></pre>
  
  <p>But since the class has to be able to wrap all the objects, that all have different methods, you cannot just define methods with the same name, and then calling the wrapped NastyObject's methods.</p>
  
  <p>Is this possible? How would you do it?</p>