← Все вопросы
Зачем нужен __init__ в классе?
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 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.