Конструирует экземпляр класса.
object.__new__(cls[, ...])
-> object
cls -- Ссылка на тип (класс), для которого запрошено конструирование объекта.

... -- Позиционные и/или именованные аргументы, играющие роль в процессе конструирования экземпляра. Это те самые аргументы, которые переданы в вызов класса.

На заметку
Метод служит в основном для модификации процесса создания как экземпляра класса, а так и самого класса. Для последнего случая он может быть определён в метаклассе.

    class Something:

def __new__(cls, *args, **kwargs):
print(f'конструируем: {args} | {kwargs}')

instance = super().__new__(cls)

# и вдруг нам захотелось добавить атрибут на лету
instance.new_attribute = 'добавлено'

print('почти готово')

return instance

def __init__(self, *args, **kwargs):
print(f'инициализируем: {args} | {kwargs}')
print(self.new_attribute)


my_obj = Something('раз', other=4)
# конструируем: ('раз',) | {'other': 4}
# почти готово
# инициализируем: ('раз',) | {'other': 4}
# добавлено

my_obj.new_attribute # 'добавлено'

На заметку
Метод является статическим, но для простоты Python позволяет не указывать @staticmethod явно.

Ожидается, что результатом __new__() будет объект. Обычно это экземпляр класса cls, который создаётся вызовом родительского __new__(). Если возвращён объект, то в последующем для него будет вызван __init__(). При этом первым аргументом (self) для этого __init__() станет упомянутый созданный экземпляр, а остальными аргументами станут переданные при вызове класса.

Внимание
Если метод возвращает None, то __init__() не вызывается.
Синонимы поиска: object, __new__, __туц__
Нет обсуждений для отображения.

Если у вас есть, что сказать, можете представиться и исправить ситуацию.

На заметку
Зарегистрированные пользователи могут получать еженедельный дайджест обновлений на сайте.