← Все вопросы

Зачем нужен __init__ в классе?

Задан 12 месяцев назад981 просмотров3 ответа
17

Вижу def __init__(self, ...) почти в каждом классе. Что это за метод и обязателен ли он?

3 ответа

24
✓ Принятый ответ — помог автору

__init__ — это конструктор, он вызывается автоматически в момент создания объекта и нужен, чтобы задать начальные значения атрибутов.

class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age

u = User("Аня", 20)  # тут вызывается __init__
print(u.name)  # Аня

Когда ты пишешь User("Аня", 20), Python создаёт пустой объект и сразу зовёт __init__, передавая туда аргументы. Не обязателен: если его нет, объект просто создастся без начальной настройки.

6

Чтобы "наполнить" объект данными при создании. Без него пришлось бы вручную писать u.name = ... после каждого создания, а это неудобно и легко забыть.

-3

Это не совсем конструктор, настоящий конструктор это __new__, а __init__ только инициализатор.

Роман Морковка формально да, но новичку это только мешает, на практике __init__ и называют конструктором · 12 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект