title: Where is this protocol defined?
body: <p>Say we do:</p>
  
  <pre><code>class thing(object):
      pass
  </code></pre>
  
  <p>and then I do <code>&gt;&gt;&gt; thing.__eq__</code>, then I get <code>&lt;method-wrapper '__eq__' of type object at 0x0E8B68D0&gt;</code>. But if we do <code>'__eq__' in dir(thing)</code>, I get an <code>NameError</code> exception saying that <code>__eq__</code> is not defined, but if its not defined, then how did I get a method wrapper return, clearly its defined, but if dir can't see it, where is it defined?</p>