Когда вы создаете экземпляр класса, Python сначала вызывает метод new() для создания объекта,
а затем вызывает метод init() для инициализации атрибутов объекта.
new() — это статический метод класса объекта. Он имеет следующую запись:
object.new(class, *args, **kwargs)
==========================================
Первый аргумент метода new — это класс нового объекта, который вы хотите создать.
Параметры *args и **kwargs должны совпадать с параметрами init() класса. Однако метод new() их использует.
Метод new() должен возвращать новый объект класса. Но это не обязательно.
Когда вы определяете новый класс, этот класс неявно наследуется от класса объекта.
Это означает, что вы можете переопределить статический метод new и сделать что-то до и после создания нового экземпляра класса.
Чтобы создать объект класса, вы вызываете метод super().new().
Технически вы можете вызвать метод object.new() для создания объекта вручную.
Однако после этого вам нужно вручную вызвать init(). Python не будет вызывать метод init() автоматически, если вы явно создаете новый объект с помощью метода object.new().
===========================================
Последовательность, в которой Python вызывает методы new и init, когда вы создаете новый объект, вызывая класс.
Далее вопрос и Пайтон код подробно изложены в блоге