Пример определения и использования класса в Python

«Пример определения и использования класса в Python» — вопрос из категории ООП, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Python класс — это шаблон или чертеж для создания объектов. Он инкапсулирует данные (атрибуты) и поведение (методы), позволяя создавать структурированный и повторно используемый код.

Пример класса Car:

class Car:
    # Конструктор класса: вызывается при создании нового объекта (экземпляра класса)
    def __init__(self, make: str, model: str, year: int):
        """Инициализирует новый объект Car."""
        self.make = make      # Атрибут экземпляра: марка автомобиля
        self.model = model    # Атрибут экземпляра: модель автомобиля
        self.year = year      # Атрибут экземпляра: год выпуска
        self.mileage = 0      # Атрибут экземпляра: пробег, инициализируется нулем

    # Метод класса: определяет поведение объекта
    def drive(self, miles: int) -> None:
        """Увеличивает пробег автомобиля на указанное количество миль."""
        if miles > 0:
            self.mileage += miles
        else:
            print("Пробег должен быть положительным числом.")

    # Метод класса: возвращает информацию об объекте
    def get_info(self) -> str:
        """Возвращает строковое представление информации об автомобиле."""
        return f"{self.year} {self.make} {self.model}, пробег: {self.mileage} миль"

# Пример использования класса (создание объектов и вызов методов):
# Создание экземпляра класса Car
my_car = Car("Toyota", "Camry", 2020)

# Вызов методов объекта
my_car.drive(150)
my_car.drive(50)

# Получение информации об объекте
print(my_car.get_info())  # Выведет: 2020 Toyota Camry, пробег: 200 миль

# Создание другого экземпляра класса
another_car = Car("Honda", "Civic", 2022)
another_car.drive(300)
print(another_car.get_info()) # Выведет: 2022 Honda Civic, пробег: 300 миль

Ключевые элементы класса Car:

  • class Car:: Объявление класса с именем Car.
  • __init__(self, ...): Это конструктор класса. Он вызывается автоматически при создании нового объекта и используется для инициализации его атрибутов. self — это ссылка на текущий экземпляр класса.
  • Атрибуты экземпляра (self.make, self.model, self.year, self.mileage): Переменные, которые хранят данные, уникальные для каждого объекта класса. Они определяют состояние объекта.
  • Методы (drive, get_info): Функции, определенные внутри класса, которые описывают поведение объектов. Они могут изменять состояние объекта или предоставлять информацию о нем.
  • Аннотации типов (make: str, -> None): Улучшают читаемость кода и позволяют инструментам статического анализа (например, MyPy) проверять корректность типов, что способствует раннему обнаружению ошибок.
  • Инкапсуляция: Класс объединяет данные (атрибуты) и методы, работающие с этими данными, в единое целое, скрывая внутреннюю реализацию и предоставляя контролируемый доступ к состоянию объекта через методы.