Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: new, init

Чем __init__() отличается от __new__()?

Этот вопрос проверяет понимание двух ключевых методов в Python, которые участвуют в создании и инициализации объектов.

Короткий ответ

__new__() отвечает за создание нового объекта, вызывается перед __init__() и возвращает сам объект. __init__() отвечает за инициализацию уже созданного объекта, он настраивает его атрибуты. Обычно __new__() переопределяется только в особых случаях, например, при наследовании от неизменяемых типов, таких как int или tuple.

Длинный ответ

__new__() и __init__() играют разные роли:

  • __new__() создаёт объект, вызывается перед __init__(). Это метод класса (статический метод). Он особенно полезен для наследования от неизменяемых типов, таких как числа или строки.

  • __init__() инициализирует объект, создавая его атрибуты и выполняя настройки. Этот метод — обычный метод экземпляра.

Пример:

class MyClass:
    def __new__(cls, *args, **kwargs):
        print("Создание объекта")
        return super().__new__(cls)

    def __init__(self, value):
        print("Инициализация объекта")
        self.value = value

obj = MyClass(42)
# Вывод:
# Создание объекта
# Инициализация объекта

Если вы возвращаете None или другой объект из __new__(), __init__() не будет вызван.

Пример применения __new__() в наследовании:

class MyInt(int):
    def __new__(cls, value):
        return super().__new__(cls, value + 1)

num = MyInt(5)
print(num)  # 6
  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Python

    Python

Ключевые слова

#new

#init

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.