Урок 8 из 8 · 25 мин · обновлено

Знакомство с классами и что учить дальше

Что такое объект и класс, как создать свой класс с данными и методами и куда двигаться после основ Python.

Вы уже работали с объектами

Помните, как в уроках 5 и 6 вызывали name.strip() или tasks.append()? Строка и список — это объекты: у них есть данные (символы, элементы) и действия, которые с этими данными можно делать (методы).

Такой подход называется объектно-ориентированным программированием (ООП). Его идея — объединить данные и действия с ними в одно целое. Python позволяет создавать свои типы объектов. Для этого описывают класс — чертёж, по которому объекты создаются.

Свой первый класс

Сделаем заказ в кафе: у него есть клиент и список позиций, а ещё действия — добавить позицию и посчитать сумму.

Python
class Order:
    def __init__(self, customer):
        self.customer = customer
        self.items = []

    def add(self, name, price):
        self.items.append(price)
        print(f"Добавлено: {name}")

    def total(self):
        return sum(self.items)

Разберём по частям:

  • class Order: — объявление класса. Имена классов принято писать с заглавной буквы.
  • __init__ — специальный метод, который срабатывает при создании объекта. Здесь объект получает начальные данные: имя клиента и пустой список.
  • self — сам объект. Запись self.items означает «список товаров этого заказа».
  • add и total — обычные функции внутри класса, то есть методы.

Создаём объекты

Python
order1 = Order("Анна")
order1.add("пицца", 450)
order1.add("морс", 150)

order2 = Order("Иван")
order2.add("кофе", 200)

print(order1.customer, order1.total())   # Анна 600
print(order2.customer, order2.total())   # Иван 200

Оба заказа созданы по одному классу, но у каждого свои данные. Метод total() считает сумму именно того заказа, у которого его вызвали.

Зачем это нужно

В маленьких программах можно обойтись словарями и функциями. Но когда кода становится много, классы помогают держать порядок: всё, что относится к заказу, лежит в одном месте. На классах построены популярные инструменты: в веб-фреймворке Django через них описывают таблицы базы данных, а в играх — персонажей и предметы.

Это лишь первое знакомство. Дальше в ООП — наследование, работа нескольких классов вместе и принципы, по которым устроены большие программы.

Что учить дальше

Вы прошли основу, с которой начинается любое направление в Python. Следующие шаги:

  1. Практика на задачах. Решайте по 2–3 задачи в день: навык закрепляется только руками.
  2. Работа с файлами и ошибками. Как читать и записывать файлы и что делать, если что-то пошло не так.
  3. Библиотеки. Готовый код для частых задач: requests — работа с сайтами, pandas — таблицы и данные.
  4. Git и GitHub. Как хранить код, смотреть историю изменений и показывать работы работодателю.
  5. Свой проект. Бот, парсер цен, учёт расходов — что угодно, что решает вашу задачу.

И выберите направление: бэкенд (серверная часть сайтов), анализ данных, автоматизация или машинное обучение. Для каждого — свой набор библиотек, но основа одна, и она у вас уже есть.

Попробуйте сами. Создайте класс Wallet (кошелёк) с балансом. Метод add(amount) пополняет кошелёк, метод pay(amount) списывает деньги, но только если их хватает, — иначе выводит «Недостаточно средств».

Решение
Python
class Wallet:
    def __init__(self, balance=0):
        self.balance = balance

    def add(self, amount):
        self.balance += amount

    def pay(self, amount):
        if amount > self.balance:
            print("Недостаточно средств")
        else:
            self.balance -= amount

wallet = Wallet()
wallet.add(1000)
wallet.pay(300)
wallet.pay(900)        # Недостаточно средств
print(wallet.balance)  # 700

Здесь работает всё, что вы прошли: переменные, условия, функции — только теперь они собраны в одном объекте.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Что такое класс?

  2. Когда вызывается метод __init__?

  3. Зачем в методах класса параметр self?

  4. Что из этого — вызов метода объекта?