Манипулирование строками в строках документов Python - PullRequest
8 голосов
/ 05 октября 2009

Я пытался сделать следующее:

#[...]
    def __history_dependent_simulate(self, node, iterations=1,
                                     *args, **kwargs):
        """
        For history-dependent simulations only:
        """ + self.simulate.__doc___

То, что я пытался сделать здесь, - это иметь ту же документацию для этого частного метода, что и документацию метода simulate, за исключением краткого введения. Это позволило бы мне избежать вставки копий, сохранить более короткий файл и не пришлось бы каждый раз обновлять документацию по двум функциям.

Но это не работает. Кто-нибудь знает причину, почему, или есть решение?

Ответы [ 2 ]

9 голосов
/ 05 октября 2009

Лучшим решением, вероятно, является использование декоратора, например:

def add_docs_for(other_func):  
    def dec(func):  
        func.__doc__ = other_func.__doc__ + "\n\n" + func.__doc__
        return func
    return dec

def foo():
    """documentation for foo"""
    pass

@add_docs_for(foo)
def bar():
    """additional notes for bar"""
    pass

help(bar) # --> "documentation for foo // additional notes for bar"

Таким образом, вы можете выполнять произвольные манипуляции со строками документов.

1 голос
/ 05 октября 2009

Я думаю, этот раздел проясняет:

Что такое строка документации?

Строка документа - это строковый литерал, который происходит как первое утверждение в модуль, функция, класс или метод определение. Такая строка документации становится doc специальный атрибут этого объект.

Итак, это не выражение, которое преобразуется в строку, это строковый литерал .

...