Steven D'Aprano schrieb am 14.07.2015 um 06:54:
> On Tuesday 14 July 2015 14:45, Ben Finney wrote:
>> 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:

And it needs to be that way in order to allow superclass calls in a
subclass's __new__ method:

  class Super(object):
      def __new__(cls):
          return object.__new__(cls)

  class Sub(Super):
      def __new__(cls):
          return Super.__new__(cls)

If it was a classmethod, it would receive the class you call it on as first
argument (i.e. "Super" and "object" above), not the class you want to
instantiate (i.e. "Sub" or "Super").

Stefan


-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to