Урок 8 из 8 · 25 мин · обновлено
Знакомство с классами и что учить дальше
Что такое объект и класс, как создать свой класс с данными и методами и куда двигаться после основ Python.
Вы уже работали с объектами
Помните, как в уроках 5 и 6 вызывали name.strip() или tasks.append()? Строка и список — это объекты: у них есть данные (символы, элементы) и действия, которые с этими данными можно делать (методы).
Такой подход называется объектно-ориентированным программированием (ООП). Его идея — объединить данные и действия с ними в одно целое. 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— обычные функции внутри класса, то есть методы.
Создаём объекты
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. Следующие шаги:
- Практика на задачах. Решайте по 2–3 задачи в день: навык закрепляется только руками.
- Работа с файлами и ошибками. Как читать и записывать файлы и что делать, если что-то пошло не так.
- Библиотеки. Готовый код для частых задач:
requests— работа с сайтами,pandas— таблицы и данные. - Git и GitHub. Как хранить код, смотреть историю изменений и показывать работы работодателю.
- Свой проект. Бот, парсер цен, учёт расходов — что угодно, что решает вашу задачу.
И выберите направление: бэкенд (серверная часть сайтов), анализ данных, автоматизация или машинное обучение. Для каждого — свой набор библиотек, но основа одна, и она у вас уже есть.
Попробуйте сами. Создайте класс Wallet (кошелёк) с балансом. Метод add(amount) пополняет кошелёк, метод pay(amount) списывает деньги, но только если их хватает, — иначе выводит «Недостаточно средств».
Решение
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
Здесь работает всё, что вы прошли: переменные, условия, функции — только теперь они собраны в одном объекте.
Мини-тест: проверьте себя
Закрепите урок: несколько вопросов, разбор ответов — в конце.
-
Что такое класс?
Класс описывает, какие данные и действия будут у объектов. По одному классу можно создать сколько угодно объектов — как дома по одному чертежу.
-
Когда вызывается метод __init__?
__init__ срабатывает автоматически, когда вы пишете, например, Order('Анна'). В нём объекту задают начальные данные.
-
Зачем в методах класса параметр self?
self — ссылка на конкретный объект. Благодаря ему у каждого заказа свой список товаров, и методы работают именно с ним.
-
Что из этого — вызов метода объекта?
Метод вызывают через точку после объекта. Так же вы вызывали методы строк и списков: name.strip(), tasks.append().