title: Why isn't __new__ in Python new-style classes a class method?
body: <p>The Changelog for Python 2.2 (where new-style classes were introduced) says the following about the <code>__new__</code> function:</p>
  
  <blockquote>
    <p><code>__new__</code> is a static method, not a class method. I initially thought it would have to be a class method, and that's why I added the <code>classmethod</code> primitive. Unfortunately, with class methods, upcalls don't work right in this case, so I had to make it a static method with an explicit class as its first argument.</p>
  </blockquote>
  
  <p>However, I cannot think of why class methods wouldn't work for this purpose, and it would certainly look better. Why didn't <code>__new__</code> end up as a class method in the end? What does Guido refer to when he says that "upcalls don't work right in this case"?</p>