Почему __new__ в классах нового стиля Python не является методом класса?

Журнал изменений для Python 2.2 (где были представлены классы нового стиля) говорит о функции __ new __ следующее:

__ new __ - статический метод , а не метод класса. Сначала я думал, что это должен быть метод класса, и поэтому добавил примитив classmethod . К сожалению, с методами класса вызовы вверх не работают в этом случае, поэтому мне пришлось сделать его статическим методом с явным классом в качестве первого аргумента.

Однако я не могу придумать, почему методы класса не работают для этой цели, и это определенно выглядело бы лучше. Почему __ new __ в итоге не превратился в метод класса? Что имеет в виду Гвидо, когда говорит, что «вызовы вверх не работают в этом случае»?

35
задан Marcin 1 February 2012 в 10:52
поделиться