title: Why does Python's != operator think that arguments are equal and not equal at the same time?
body: <p>Take the following example:</p>
  
  <pre><code>&gt;&gt;&gt; class C(object):
  ...     def __init__(self, p):
  ...         self.p = p
  ...     def __eq__(self, o):
  ...         return True
  ... 
  &gt;&gt;&gt; C(1) is C(2)
  False
  &gt;&gt;&gt; C(1) == C(2)
  True
  &gt;&gt;&gt; C(1) != C(2)
  True # &lt;- Why?!?
  </code></pre>
  
  <p>So now the two objects are equal and not-equal at the same time. I though the two operations are opposing?!</p>