В Changelog для Python 2.2 (где были введены классы нового стиля) говорится о функции __new__
:
__new__
- это статический метод, а не метод класса. Первоначально я думал, что это должен быть метод класса, и поэтому я добавил примитивclassmethod
. К сожалению, с помощью методов класса, upcalls не работают правильно в этом случае, поэтому я должен был сделать его статическим методом с явным классом в качестве его первого аргумента.
Однако я не могу придумать, почему методы класса не будут работать для этой цели, и это, безусловно, будет выглядеть лучше. Почему в конце концов метод __new__
оказался в качестве метода класса? О чем говорит Гвидо, когда он говорит, что "восстания в этом случае не работают"?