Метод __init__()
У каждого класса есть встроенный метод __init__(), и Python выполняет его каждый раз, когда класс используется для создания нового объекта.
Именно здесь можно присвоить значения свойствам объекта или выполнить любую другую работу, которая нужна новому объекту при создании.
Примечание: вызов __init__() происходит автоматически, один раз для каждого нового объекта, который вы создаёте.
Пример
Класс с именем Person, метод __init__() которого сохраняет имя и возраст:
Вывод: полная программа на Python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Emil", 36)
print(p1.name)
print(p1.age)
Зачем использовать __init__()?
Если не использовать __init__(), свойства каждого объекта придётся задавать вручную, по одному:
С __init__() начальные значения задаются прямо при создании объекта, и это намного проще:
Пример
Класс без __init__():
Вывод: полная программа на Python
class Person:
pass
p1 = Person()
p1.name = "Tobias"
p1.age = 25
print(p1.name)
print(p1.age)
Пример
Здесь __init__() получает начальные значения при создании объекта:
Вывод: полная программа на Python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Linus", 28)
print(p1.name)
print(p1.age)
Значения по умолчанию в __init__()
Параметры __init__() также могут иметь значения по умолчанию:
Пример
Задайте параметру age значение по умолчанию:
Вывод: полная программа на Python
class Person:
def __init__(self, name, age=18):
self.name = name
self.age = age
p1 = Person("Emil")
p2 = Person("Tobias", 25)
print(p1.name, p1.age)
print(p2.name, p2.age)
Несколько параметров
Задайте для __init__() столько параметров, сколько нужно вашему классу:
Пример
Класс Person, который принимает несколько параметров:
Вывод: полная программа на Python
class Person:
def __init__(self, name, age, city, country):
self.name = name
self.age = age
self.city = city
self.country = country
p1 = Person("Linus", 30, "Oslo", "Norway")
print(p1.name)
print(p1.age)
print(p1.city)
print(p1.country)