ООП — парадигма программирования, когда мы код выстраиваем в виде совокупности объектов, которые являются объектами классов. А классы выстраивают иерархию наследования.
В ООП есть 3 основных принципа: инкапсуляция, полиморфизм, наследование. Можно назвать еще 1 — абстракция. Абстракция — в коде используем только те характеристики объекта, которые нужны в этом коде (у объекта в реальном мире может быть 100500 характеристик, но в коде мы от этого абстрагируемся и используем только то, что нам нужно сейчас). Наследование — 1 класс может строиться на основе другого. 1 будет родительским, другой дочерним. Дочерний класс получает всё от родительского (поля, методы). Инкапсуляция — есть 2 определения:
self
Класс — шаблон для уникальных экземпляров
Объект — уникальный экземпляр какой-то сущности/класса
В методах используются self
, csl
как ссылки на текущий объект/класс
self
: чтобы в методе понять к какому объекту он относится, методы объекта первым аргументом принимают self
.
self
— ссылка на текущий объект
csl
— ссылка на текущий класс
super
в классах?super
нужен для доступа к родительским классам, когда есть наследование.
К родительским методам, когда дочерняя может быть перегружена. По сути super
— ссылка на объект родительской сущности.
super
очень часто используется в родительских методах (например в __init__.py
, когда нужно пробросить аргументы в родительский конструктор)
Методы объекта доступны только через объект Методы класса и статические методы можно использовать без объекта.
@classmethod
(метод класса):
cls
).