Ответы пользователя по тегу Паттерны проектирования
  • Как работает __new__ в приведенном коде?

    Bobsans
    @Bobsans
    Full-Stack Developer
    __new__ из object'а вызвался бы в любом случае. Это и есть создание экземпляра объекта. Просто в данном примере мы его переопределили и вызываем super() для выполнения кода из метода __new__ родителя.
    В примере в __new__ передается cls. cls - это тип объекта, который необходимо создать.
    То же самое можно сделать и так:
    def __new__(cls):
        if cls.instance is None:
            cls.instance = object.__new__(cls)
        return cls.instance

    Или так:
    class ClassA:
       pass
    
    instance = object.__new__(ClassA) # <ClassA object at 0x0....>
    Ответ написан
    Комментировать