__init__
, используется для инициализации атрибутов объекта при его создании. Внутри __init__
мы принимаем аргументы и присваиваем их значения атрибутам экземпляра, используя self.attribute_name = argument
. Это позволяет настроить объект с нужными данными сразу после его создания.
В Python конструктор класса — это специальный метод, который вызывается при создании нового экземпляра класса. Он определяется с помощью метода __init__(self, ...)
. Используется он для того, чтобы установить начальные значения атрибутов объекта.
Аргумент self
является ссылкой на сам объект, который создается. Все последующие аргументы (...
) представляют собой параметры, передаваемые при создании экземпляра класса, которые можно использовать для инициализации атрибутов.
Вот пример:
class Person:
def __init__(self, name, age):
# Инициализируем атрибуты объекта значениями, переданными в конструктор
self.name = name
self.age = age
def introduce(self):
print(f"Привет, меня зовут {self.name}, и мне {self.age} лет.")
# Создаем экземпляр класса Person, передавая имя и возраст
john = Person("John Doe", 30)
# Теперь атрибуты john.name и john.age инициализированы
john.introduce() # => Привет, меня зовут John Doe, и мне 30 лет.
В этом примере, когда мы создаем экземпляр Person
с помощью Person("John Doe", 30)
, вызывается метод __init__
. Значения "John Doe" и 30 передаются в качестве аргументов name
и age
соответственно. Внутри __init__
мы присваиваем эти значения атрибутам self.name
и self.age
, таким образом инициализируя состояние объекта.
Важно отметить, что атрибуты могут быть инициализированы значениями по умолчанию, если не передавать соответствующие аргументы при создании экземпляра класса, например:
class Car:
def __init__(self, model="Unknown", year=2000):
self.model = model
self.year = year
my_car = Car() # использует значения по умолчанию
print(my_car.model) # => Unknown
print(my_car.year) # => 2000
your_car = Car("Tesla", 2023) # использует переданные значения
print(your_car.model) # => Tesla
print(your_car.year) # => 2023
Также, в конструкторе можно вызывать другие методы класса для более сложной инициализации.