Декораторы · 7 из 14
Декоратор на методе
Задействованы также: ООП
Окон в отделении три, и каждое считает свои операции: у кого сколько за смену. Счётчик нужен у окна, а не один на всё отделение — иначе премию делить не по чему.
Что сделать
Посчитайте операции каждого окна отдельно — декоратором на методах.
Что приходит
nomer— номер окна
Что должен уметь
Поле operacii — сначала 0; методы prinyat(ves) и vydat(komu) под декоратором schitat отдают "окно 1: принято 500 г" и "окно 1: выдано Марине" и увеличивают счёт своего окна.
Допишите класс Okno в редакторе справа.
Проверка создаёт его объекты и зовёт методы — то, что напечатано,
на проверку не влияет.
Первое окно приняло посылку и выдало письмо, второе — только приняло: (2, 1). Имена методов не теряются — Okno.prinyat.__name__ по-прежнему "prinyat".
pervoe = Okno(1)
vtoroe = Okno(2)
pervoe.prinyat(500)
pervoe.vydat("Марине")
vtoroe.prinyat(1000)
(pervoe.operacii, vtoroe.operacii)
(2, 1)
Написать декоратор «schitat» и класс «Okno».
У окна есть номер (задаётся при создании) и поле «operacii» — число операций этого окна, в начале ноль. Методы «prinyat(ves)» и «vydat(komu)» возвращают строки «окно 1: принято 500 г» и «окно 1: выдано Марине» соответственно, где 1 — номер окна. Оба метода обёрнуты декоратором «schitat»: каждый их вызов увеличивает «operacii» у того окна, у которого метод позвали. Имена методов при этом сохраняются: «Okno.prinyat.name» — по-прежнему «prinyat».
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.