title: Binding magic methods seemingly no longer works in python 3
body: <p>I'm trying to bind an instance method which happens to also be a magic method, however python3 doesn't seem to be able to recognize this binding when I try to(indirectly) call the magic method.</p>
  
  <p>This method of patching magic functions used to work in python 2, but no more in python 3.</p>
  
  <p>The code looks something like this:</p>
  
  <pre class="lang-py prettyprint-override"><code>class Test: 
      def __init__(self, x): 
          self._x = x 
          self.calc_hash = self._x.__hash__ 
          self.__hash__ = self._x.__hash__
  
  t = Test(5)
  print(hash(5))
  print(t.calc_hash())  # prints the same as hash(5)
  print(hash(t))  # prints a value different from that of hash(5)
  </code></pre>
  
  <p>I expected python 3 would work here just as python 2 did, but that doesn't seem to be the case.</p>