Если new возвращает объект, который не является экземпляром создаваемого класса или его подкласса, init этого класса не вызывается. Результатом вызова класса станет возвращённый объект.
Что произойдёт, если __new__ вернёт объект другого класса?
Если __new__ возвращает объект, который не является экземпляром создаваемого класса или его подкласса, __init__ этого класса не вызывается. Результатом вызова класса станет возвращённый объект.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что произойдёт, если new вернёт объект другого класса?
Ответ
Если new возвращает объект, который не является экземпляром создаваемого класса или его подкласса, init этого класса не вызывается. Результатом вызова класса станет возвращённый объект.
Например, new класса A может вернуть строку; A() тогда даст строку, а A.init пропустится. Если возвращён экземпляр A или подкласса, стадия инициализации выполняется по правилам создания объектов. Поэтому формулировка «объект другого класса» требует уточнения: подкласс и совершенно несвязанный тип — разные случаи. Такой приём допустим, но может удивлять вызывающий код и инструменты типизации.
Источник: docs.python.org.