Bruno Desthuilliers <[EMAIL PROTECTED]> writes: > FWIW, I wonder why the BDFL choosed to implement __new__ as a > staticmethod - there are probably some pretty good reasons, but not > knowing them, it looks like __new__ would have been a perfect > candidate for a classmethod. > > So far, the only reason I can think of is that making it a classmethod > would have required the use of super(Parent, cls) to call the parent's > class __new__, which may (or may not - never had the case) be > problematic (any guru on this ?)
Don't know but I remember something about this in 'Unifying types and classes'. There it is: Factoid: __new__ 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 classmethod 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. Ironically, there are now no known uses for class methods in the Python distribution (other than in the test suite). I might even get rid of classmethod in a future release if no good use for it can be found! (http://www.python.org/download/releases/2.2/descrintro/) I don't have the time to try to figure it out :( -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list