Основные принципы ООП
ООП - Объектно Ориентированное Программирование - является одной из наиболее популярных парадигм (подходов) программирования на сегодняшний день. Оно основывается на нескольких важных принципах:
Класс - описание какой-либо сущности, её состояния и поведения (Можно сказать, "чертёж" объекта).
Как можно написать класс в Python?
class Phone: # тут будут поля и методы
Объект - готовая сущность, построенная на основе класса (Например, объект "iPhone" построенный на основе класса-чертежа "Phone").
Как создать объект в Python?
iPhone = Phone( # сюда, возможно, передадим свойства объекта )
Поле - какое-либо свойство каждого объекта класса (например, "громкость" у телефона. Относится к классу, так как у каждого телефона может быть громкость, но у каждого объекта "телефон" громкость своя, независимая).
Метод - определённое действие, которое может совершить объект. Например, телефон может зазвонить ("ring").
Как определить метод для класса?
class Phone: def ring(self): print("B-z-z-z!") # Любой телефон делает Б-з-з!
Вы можете заметить параметр self у метода ring. этот параметр Python передаёт самостоятельно, когда мы вызываем этот метод у какого-либо конкретного объекта:
iPhone = Phone() iPhone.ring() # Внутри ring self станет равен переменной iPhone
Кроме обычных методов класса, которые придумываем мы сами, существуют также "специальные" методы, у них специальные названия, начинающиеся и заканчивающиеся двумя подчеркиваниями ("__", так называемый "dunder" - "double underscore" - двойное подчёркивание). Их можно определить для любого объекта в Python:
Например, метод, который даёт нам представление телефона в виде строки:
class Phone: def __str__(self): # self.volume - обращаемся к конкретному объекту, # для которого мы вызвали этот метод. # в данном случае хотим получить его громкость. return f"Это телефон. Его громкость - {self.volume}"
Ещё нам позволяется передавать параметры нового создаваемого объекта сразу при написании Phone(), внутрь скобок. Для этого в Python существует специальный метод __init__, называемый конструктором. он описывается так:
class Phone: def __init__(self, name): self.name = name # ставим название новому телефону
А вызывается так:
p = Phone('iPhone X') print(p.name) # Выведет 'iPhone X'