Пример определения и использования класса в 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) проверять корректность типов, что способствует раннему обнаружению ошибок.
  • Инкапсуляция: Класс объединяет данные (атрибуты) и методы, работающие с этими данными, в единое целое, скрывая внутреннюю реализацию и предоставляя контролируемый доступ к состоянию объекта через методы.

Ответ 18+ 🔞

Да ты посмотри, что эти питонятники вытворяют, блядь! Взяли и придумали себе целые чертежи для объектов, как будто на заводе, ёпта. Класс — это типа шаблон, по которому штампуются штуковины, и каждая со своими пиздюлинами внутри.

Вот смотри, как они свою тачку описали, прям как в автосалоне каталог, блядь:

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} миль"

Ну и что тут происходит, спросишь ты? А вот что, блядь:

  • class Car: — это они объявляют, мол, вот он, наш чертёж, называется «Тачка». Всё, приехали.
  • __init__(self, ...) — это, сука, конструктор! Не тот, который здание строит, а тот, который вызывается, когда ты новый объект создаёшь. self — это типа сам этот новорождённый объект, который ещё и не понял, куда его засунули.
  • Атрибуты (self.make, self.mileage и прочая хуйня) — это внутренние пиздюлины каждой тачки. У одной марка «Тойота», у другой — «Хонда», а пробег у всех изначально ноль, потому что с завода же, блядь!
  • Методы (drive, get_info) — это что объект умеет делать. Поехать — drive, или рассказать о себе — get_info. Всё логично, ёпта.

А теперь смотри, как этим пользоваться, прям как в жизни:

# Родили новую тачку по чертежу
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 миль

И вся эта магия называется инкапсуляция, блядь! Это когда ты данные и действия над ними в одну кучу сгребаешь, как будто в консервную банку, и говоришь: «Вот тебе, объект, живи тут, а наружу только ручку-метод высунул, чтобы тебя покрутить можно было». Удобно, сука, не разбежится ничего.

А эти аннотации типов (make: str, -> None) — это они такие умные, чтобы компилятор не орал потом «нахуя ты строку в пробег суёшь, мудак?». Предупредительная мера, блядь.

Вот так и живём: чертежи, объекты, методы... Ёперный театр, а не программирование!