Азыконструкции языка python

Классы в Python. часть2

Опубликовано

Инициализация.

Когда вы впервые входите на какой-нибудь сайт, вас обычно просят авторизоваться, но если у вас ещё нет учётной записи, вам необходимо её создать. Вы заполняете необходимые поля, такие как имя пользователя, пароль, e-mail, возраст и пр. И нажимаете кнопку «создать учётную запись». Именно в этот момент происходит инициализация, иными словами создание объекта класса пользователь. На каждом сайте есть база данных, которая хранит информацию о пользователях, которые прошли регистрацию на данном сайте. Другими словами — были инициализированы как пользователи. Когда мы создаём объекты в программировании мы можем перехватить момент создания(инициализации) объекта, для этого служит метод __init__(self):

Она предопределена внутри каждого класса. Объявите функцию с данным именем и теперь перед тем как будет создан объект класса, сначала будет выполнено тело метода __init__(self): 

В качестве первого параметра всегда передаётся self — это ссылка на создаваемый нами объект. А если у нас есть ссылка на объект, значит мы можем присвоить ему определённые свойства прямо в момент создания. Для этого внутри функции необходимо прописать self.имя_свойства = значение. Количество свойств ничем не ограничивается, кроме фантазии автора. Кроме параметра self, метод __init__ может принимать сколько угодно параметров, которые вы называете самостоятельно. Но помните, все эти параметры(кроме self) необходимо передать в момент создания объекта точно в такой же последовательности, как вы их указали. Повторюсь, метод __init__  вызывать не нужно, он сам вызывается в момент создания класса, а self хранит в себе ссылку на создаваемый объект. 

Встроенный метод __repr__(self): перехватывает событие презентации объекта т.е. вывод его на печать. Но давайте сконцентрируемся на том как правильно использовать  __init__

Подклассы и суперклассы 

В коде выше мы создали класс Car, описывающий свойства всех транспортных средств, у каждого автомобиля есть колёса, цвет, мощность двигателя. Но если мы захотим более детально описать какой-то класс авто, например, гоночный болид, или подъёмный кран, или автобус, то нам потребуются дополнительные свойства принадлежащие только этому подклассу. Чтобы не переписывать всё описание, мы можем воспользоваться главным классом Car и создать его разновидность используя следующий синтаксис. 

Мы объявили новый класс Crane_car и указали в скобках его суперкласс. Теперь Crane_car является разновидностью класса Car и автоматически наследует все его свойства и методы. Ещё нам необходимо вызывать метод __init__ суперкласса.


Добавить комментарий

Ваш адрес email не будет опубликован.