Помогите пожалуйста исправить ошибку в задании Питона!
mr alastor
Ученик
(77),
на голосовании
1 месяц назад
МОЙ КОД с замечанием учителя:
import functools from typing import Callable, Any
def how_are_you(func: Callable): @functools.wraps(func) def wrap(*args, **kwargs) -> Any: inp = input('Как дела? ') print('А у меня не очень! Ладно, держи свою функцию.') func(*args, **kwargs)# TODO тут надо же вернуть результат, то есть добавить return и в других заданиях тоже return wrap
@how_are_you def test(a: int, b: int) -> None: print('<Тут что-то происходит...>') print(a + b)
test(10, 45)
Замечание учителя:
Задание само:
Задача 1. Как дела? Что нужно сделать Вася совсем заскучал на работе и решил побаловаться с кодом проекта. Он написал надоедливый декоратор, который при вызове декорируемой функции спрашивает у пользователя «Как дела?», вне зависимости от ответа пишет что-то вроде «А у меня не очень!» и только потом запускает саму функцию. Правда, после такой выходки Васю чуть не уволили с работы.
Реализуйте такой же декоратор и проверьте его работу на нескольких функциях.
Пример кода:
@how_are_you def test(): print('<Тут что-то происходит...>')
test() Результат: Как дела? Хорошо. А у меня не очень! Ладно, держи свою функцию. <Тут что-то происходит...>
Что оценивается Результат вычислений корректен. Формат вывода соответствует примеру. Переменные, функции и собственные методы классов имеют значащие имена (не a, b, c, d). Классы и методы/функции имеют прописанную документацию. Есть аннотация типов для методов/функций и их аргументов (кроме args и kwargs). Если функция/метод ничего не возвращает, то используется None. Во всех декораторах используется functools.wraps().
Можете исправить код пожалуйста? Очень не хватает времени доработать!
import functools
from typing import Callable, Any
def how_are_you(func: Callable):
@functools.wraps(func)
def wrap(*args, **kwargs) -> Any:
inp = input('Как дела? ')
print('А у меня не очень! Ладно, держи свою функцию.')
func(*args, **kwargs)# TODO тут надо же вернуть результат, то есть добавить return и в других заданиях тоже
return wrap
@how_are_you
def test(a: int, b: int) -> None:
print('<Тут что-то происходит...>')
print(a + b)
test(10, 45)
Замечание учителя:
Задание само:
Задача 1. Как дела?
Что нужно сделать
Вася совсем заскучал на работе и решил побаловаться с кодом проекта. Он написал надоедливый декоратор, который при вызове декорируемой функции спрашивает у пользователя «Как дела?», вне зависимости от ответа пишет что-то вроде «А у меня не очень!» и только потом запускает саму функцию. Правда, после такой выходки Васю чуть не уволили с работы.
Реализуйте такой же декоратор и проверьте его работу на нескольких функциях.
Пример кода:
@how_are_you
def test():
print('<Тут что-то происходит...>')
test()
Результат:
Как дела? Хорошо.
А у меня не очень! Ладно, держи свою функцию.
<Тут что-то происходит...>
Что оценивается
Результат вычислений корректен.
Формат вывода соответствует примеру.
Переменные, функции и собственные методы классов имеют значащие имена (не a, b, c, d).
Классы и методы/функции имеют прописанную документацию.
Есть аннотация типов для методов/функций и их аргументов (кроме args и kwargs). Если функция/метод ничего не возвращает, то используется None.
Во всех декораторах используется functools.wraps().
Можете исправить код пожалуйста? Очень не хватает времени доработать!