Comments 2
кроме «чистого» и «грязного», есть решение стандартное:
docs.python.org/library/functools.html#functools.wraps
Вместо func_name и func_doc лучше использовать __name__ и __doc__, т.к. эти атрибуты работают со встроенными функциями (что в данном примере не важно), и всем своим видом показывают, что атрибуты это специальные (что в данном примере важно).
Функции help() уделено слишком много внимания) Докстринги — сильно гораздо более полезная, чем просто необходимый минимум для функции help. Например, можно вспомнить доктесты и автогенерацию документации с с помощью sphinx или pydoc. Ну и подсказки в IDE.
> (Этот материал — для начинающих пользователей.)
Начинающие в итоге будут пользоваться чем-то сторонним вместо встроенных в стандартную библиотеку средств, думать, что докстринги — какая-то маловажная ерунда для тех, кто пишет только в консоли, и что имя функции нужно узнавать через func_name.
Но это я так, придираюсь, за то, что тему эту подняли: + )
docs.python.org/library/functools.html#functools.wraps
Вместо func_name и func_doc лучше использовать __name__ и __doc__, т.к. эти атрибуты работают со встроенными функциями (что в данном примере не важно), и всем своим видом показывают, что атрибуты это специальные (что в данном примере важно).
Функции help() уделено слишком много внимания) Докстринги — сильно гораздо более полезная, чем просто необходимый минимум для функции help. Например, можно вспомнить доктесты и автогенерацию документации с с помощью sphinx или pydoc. Ну и подсказки в IDE.
> (Этот материал — для начинающих пользователей.)
Начинающие в итоге будут пользоваться чем-то сторонним вместо встроенных в стандартную библиотеку средств, думать, что докстринги — какая-то маловажная ерунда для тех, кто пишет только в консоли, и что имя функции нужно узнавать через func_name.
Но это я так, придираюсь, за то, что тему эту подняли: + )
functools.wraps делает то же самое, что моё промежуточное решение — копирует func_*
Sign up to leave a comment.
Как применять и декораторы, и документацию в Python