title: __instancecheck__ - overwrite shows no effect - what am I doing wrong?
body: <p>I'm trying to make my class appear as a different object to circumvent lazy type checking in a package I'm using. More specifically, I'm trying to make my object appear as an instance of another object (<code>tuple</code> in my case) when in reality it is not even a derivation of that.</p>
  
  <p>In order to achieve this, I plan to overwrite the <code>__isinstance__</code> method which, according to the <a href="https://docs.python.org/3/reference/datamodel.html#class.__instancecheck__" rel="noreferrer">docs</a>, should do exactly what I desire. However, it appears that I didn't understand how do to do that exactly, because my attempts have been unsuccessful.</p>
  
  <p>Here's an SSCCE that <em>should</em> make <code>isinstance</code> return <code>False</code> in all cases but doesn't.</p>
  
  <pre><code>class FalseInstance(type):
      def __instancecheck__(self, instance):
          return False
  
  class Foo(metaclass=FalseInstance):
      pass
  
  g = Foo()
  isinstance(g, Foo)
  &gt; True
  </code></pre>
  
  <p>What am I doing wrong?</p>