On Tuesday 14 July 2015 14:45, Ben Finney wrote: > Howdy all, > > The Python reference says of a class ‘__new__’ method:: > > object.__new__(cls[, ...]) > > Called to create a new instance of class cls. __new__() is a static > method (special-cased so you need not declare it as such) that takes > the class of which an instance was requested as its first argument.
This is correct. __new__ is a static method and you need to explicitly provide the cls argument: py> class Spam(object): ... def __new__(cls): ... print cls ... py> Spam.__new__() # implicit first arg? Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: __new__() takes exactly 1 argument (0 given) py> Spam.__new__(Spam) <class '__main__.Spam'> Furthermore: py> type(Spam.__dict__['__new__']) <type 'staticmethod'> > I suspect this a bug in the reference documentation for ‘__new__’, and > it should instead say “__new__ is a class method …”. Am I wrong? I've made that mistake in the past too :-) -- Steve -- https://mail.python.org/mailman/listinfo/python-list