Раздел 45 · Python backend: Тарбадель

Зачем ООП: всё в Python объект

junior~30 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Кельса привела тебя в мастерскую на рассвете после ревизии. «Четвёртый мост» живёт в бывшем трамвайном депо на границе Нижнего яруса и Ярусов сервисов: рельсы под бетоном, верстак во всю стену, стойка со старыми терминалами, снятыми с ларьков. На доске заказов мелом двенадцать квадратов, в каждом номер ларька и имя хозяина. В первом «Седьмой кабель» и кривая подпись Клабса.

Узор всю ночь провёл у флешки Клабса и ни разу не свернулся кольцом. Под утро ты понял почему: в 03:00 по журналам ярусов что-то прошло. Ни команды, ни кассира, одна строка. Узор запомнил время и молчит.

На подножке мёртвого трамвая сидит странник, тот самый, что оставил Узора на прилавке. Вокруг него трое из команды с кружками синт-чая.

Странник допивает чай и уходит в сторону рельсов. Кельса не провожает его взглядом: она снимает со стойки терминал ларька №3 и ставит перед тобой. Племянник хозяина дописал туда свою оплату, «чтобы быстрее».

def take_cash(state, total):
    state["sale"] = state["sales"] + 1
    state["revenue"] = state["revenue"] + total

Найди букву сам. В ключе "sale" нет s. Словарь смены не спорит: нет такого ключа, значит, будет новый. Каждая оплата кладёт в state["sale"] число «старые продажи плюс один», а настоящие state["sales"] никто не трогает:

state = kassa.open_shift("ира")
take_cash(state, 1599)
take_cash(state, 320)
print(kassa.shift_report(state))
print(state["sale"])
Итог смены:
продаж: 0
выручка: 19.19
средний чек: 0.00
1

Ни трассировки, ни ошибки. Словарь это мешок: в него можно положить что угодно под каким угодно именем. А смене нужно другое: вещь, которая знает свои части и свои действия. В этом разделе ты переделаешь терминал из мешка ключей в такие вещи. Начнём с того, что вещами в Python было всё с самого первого урока.

урок из курса

Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.