Le journal des modifications de Python 2.2 (où les nouvelles classes ont été introduites) dit ce qui suit à propos de la fonction __new__
:
__new__
est une méthode statique, pas une méthode de classe. J'ai initialement pensé qu'elle devait être une méthode de classe, et c'est pourquoi j'ai ajouté le primitiveclassmethod
. Malheureusement, avec les méthodes de classe, les upcalls ne fonctionnent pas correctement dans ce cas, donc j'ai dû en faire une méthode statique avec une classe explicite comme premier argument.
Cependant, je ne peux pas comprendre pourquoi les méthodes de classe ne fonctionneraient pas à cette fin, et cela aurait certainement meilleure allure. Pourquoi __new__
n'a-t-elle finalement pas été une méthode de classe? À quoi Guido fait-il référence lorsqu'il dit que "les upcalls ne fonctionnent pas correctement dans ce cas"?