Короткий ответ
Класс в Python — это логическая сущность, описывающая набор однотипных объектов: она содержит атрибуты (данные) и методы (поведение). Класс можно рассматривать как «чертёж», по которому создаются объекты, а объект, или экземпляр, — конкретная реализация этого чертежа со своим состоянием.
Как это работает подробнее
Класс объявляется ключевым словом class, после которого идут имя класса и тело с отступом. Экземпляр создаётся вызовом класса как функции: имя = ИмяКласса(аргументы).
- Атрибуты класса. Переменные, заданные на уровне класса, являются общими для всех экземпляров.
- Атрибуты экземпляра. Переменные, присвоенные через
selfвнутри__init__(), принадлежат каждому конкретному объекту. - Метод __init__. При создании экземпляра Python автоматически вызывает
__init__(), который инициализирует атрибуты нового объекта. - Методы. Функции внутри класса получают доступ к экземпляру через параметр
selfи описывают его поведение. - Всё есть объект. В Python практически всё, с чем работает программист, является объектом какого-либо класса.
Пример кода
Класс Car и его экземпляры
class Car:
brand = 'Toyota' # атрибут класса — общий для всех машин
def __init__(self, model, year):
self.model = model # атрибуты экземпляра
self.year = year
def info(self):
return f'{self.brand} {self.model}, {self.year} год'
car1 = Car('Camry', 2020) # вызов класса создаёт экземпляр
car2 = Car('RAV4', 2021)
print(car1.info()) # Toyota Camry, 2020 годЧто использовать на практике
- Моделирование сущностей. Класс уместен, когда нужно описать повторяющуюся сущность с данными и поведением — пользователя, заказ или автомобиль.
- Создание через вызов. Экземпляры создавай вызовом класса с нужными аргументами — так же, как вызывается обычная функция.
- Инициализация состояния. Всю начальную настройку объекта выполняй в
__init__(), присваивая значения черезself.
Подводные камни
- Забытый self. Без параметра
selfметод не получит доступ к экземпляру, а вызов упадёт с ошибкой про неверное количество аргументов. - Присваивание без self. Если записать значение без
self, оно станет локальной переменной метода или атрибутом класса, а не свойством объекта. - Опечатка в __init__. Двойные подчёркивания легко пропустить: метод с именем
_init_не вызовется автоматически, и объект останется без инициализации.
Как отвечать на собеседовании
- Начни с определения класса как «чертежа» с атрибутами и методами → объясни, что экземпляр — конкретный объект, созданный по этому чертежу → покажи код: объявление
class Carс методом__init__()и создание объектовCar('Camry', 2020)→ упомяни общие атрибуты класса и личные атрибуты экземпляра.