Декоратор Python, обрабатывающий docstrings

Вы могли бы быть в состоянии получить некоторые идеи реализации от библиотека Ruby/ProgressBar , который генерирует текстовые индикаторы выполнения. Я споткнулся через него несколько месяцев назад, но не сделал использования из него.

49
задан Günther Jena 22 August 2016 в 21:41
поделиться

3 ответа

Используйте functools.wraps () для обновления атрибутов декоратора:

from functools import wraps

def decorator(f):
    @wraps(f)
    def _decorator():
        print 'decorator active'
        f()
    return _decorator

@decorator
def foo():
    '''the magic foo function'''
    print 'this is function foo'

help(foo)

Также см. Документацию стандартной библиотеки для функций .

81
ответ дан 7 November 2019 в 11:38
поделиться

Я нашел решение, но не знаю, действительно ли оно хорошо:

def decorator(f):
    def _decorator():
        print 'decorator active'
        f()
    _decorator.__name__=f.__name__
    _decorator.__doc__=f.__doc__
    return _decorator

Часть с _decorator .__ name __ = f .__ name __ кажется немного отвратительным ... Как вы думаете?

16
ответ дан 7 November 2019 в 11:38
поделиться

Взгляните на functools.wraps : http://docs.python.org/library/functools.html

2
ответ дан 7 November 2019 в 11:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: