Метод __init__() в Python — как использовать
В этом уроке вы узнаете, как использовать метод __init__() в Python для инициализации атрибутов объекта.
Что такое метод __init__() в Python?
Когда вы создаете новый объект класса, Python автоматически вызывает метод __init__() для инициализации атрибутов объекта.
В отличие от обычных методов, метод __init__() имеет два подчеркивания(__) с каждой стороны. Поэтому __init__() часто называют dunder init. Название происходит от двойного подчеркивания init. Двойное подчеркивание с обеих сторон метода __init__() указывает на то, что Python будет использовать этот метод внутри себя. Другими словами, вам не следует явно вызывать этот метод.
Поскольку Python автоматически вызывает метод __init__() сразу после создания нового объекта, вы можете использовать метод __init__() для инициализации атрибутов объекта.
Ниже определяется класс Person с помощью метода __init__():
class Person: def __init__(self, name, age): self.name = name self.age = age if __name__ == '__main__': person = Person('John', 25) print(f"I'm {person.name}. I'm {person.age} years old.")
Когда вы создаете экземпляр класса Person, Python выполняет две вещи:
- Сначала создается новый экземпляр класса Person, установив пустое пространство имен объекта, например атрибут __dict__({}).
- Затем вызывается метод __init__ для инициализации атрибутов вновь созданного объекта.
Обратите внимание, что метод __init__ не создает объект, а только инициализирует его атрибуты. Следовательно, __init__() не является конструктором.
Если __init__ имеет параметры, отличные от self, вам необходимо передать соответствующие аргументы при создании нового объекта, как в примере выше. В противном случае вы получите ошибку.
Метод __init__ с параметрами по умолчанию
Параметры метода __init__() могут иметь значения по умолчанию. Например:
class Person: def __init__(self, name, age=22): self.name = name self.age = age if __name__ == '__main__': person = Person('John') print(f"I'm {person.name}. I'm {person.age} years old.")
Выход:
I'm John. I'm 22 years old.
В этом примере параметр age имеет значение по умолчанию 22. Поскольку мы не передаем аргумент в Person(), для возраста используется значение по умолчанию.