Абстракции — сердце любого приложения, мы создаем, редактируем и удаляем их, они хранятся в базе данных, мы видим их в каталоге и фильтруем по их свойствам в поиске. В абстракции мы берем достаточно данных от объекта реального мира для бизнес-целей приложения, а остальные отбрасываем.
Класс (он же тип) — реализация абстракции в коде. Можно сравнить с формой для печенья, по образцу которой создаются экземпляры. Имеет поля и методы.
Поля — свойства класса, которыми будут обладать экземпляры, во всем похожи на переменные.
Методы — действия, которые может делать класс (или с классом). Очень похожи на функции, но имеют первым аргументом self.
Экземпляр (он же объект) — один из представителей класса. Имеет такие поля и методы, которые описаны при создании класса.
Self — ссылка из метода, указывающая на экземпляр. Пригодится, чтобы изменять значения полей и вызвать из одних методов другие методы.
Инициализатор — магический метод, который вызывается при создании каждого экземпляра. Обычно используется для задания значений полям. Принимает аргументы. Как и любой метод класса, первым аргументом принимает self.

class Hero:
def go_right(self):
print("Я иду направо")
def go_left(self):
print("Я иду налево")
def observe(self):
print("Я осматриваюсь")
hero = Hero()
type(hero)