2016-03-18 2 views
3

Я использую модуль cmd. есть команда, которую я хотел бы, чтобы документ, как это:python - как включить переменную в строку doc?

def do_this(self,arg) 
    "this command accepts these values {values}".format(values="legal values") 

аргументации быть, я хотел бы ввести этот список допустимых значений только один раз. Я обнаружил, что позже могу изменить документацию, но я думаю, что это взломать. Есть ли способ сделать это?

ответ

5

Изменение значения docstring после этого (путем присвоения do_this.__doc__) является единственным способом.

Если вы хотите, чтобы он выглядел лучше, вы можете использовать декоратор, но он по-прежнему назначает do_this.__doc__.

def doc(docstring): 
    def document(func): 
     func.__doc__ = docstring 
     return func 

    return document 

@doc("this command accepts these values: {values}".format(values=[1, 2, 3]) 
def do_this(self, arg): 
    pass 
+0

Вы должны использовать 'functools.wraps' для декоратора, так что вы ничего не теряете? – gerrit

+0

@gerrit negative, это не обертка (переименованная внутренняя функция в 'document') –

+0

умный, мне нужно будет проверить декораторы. Я новичок в python, и чувствую, что я выпиваю из firehouse в этот момент. – kdubs

1

Как у вас есть эти значения в переменной, вы можете ссылаться на него в документ:

# mymodule.py 
legal_values = {'one', 'two', 'three'} 

def do_this(self,arg) 
    """this command accepts these values: see `mymodule.legal_values`""" 
+0

попробовал это. похоже, не работает. это backticks вокруг legal_values? – kdubs

+0

@kdubs они работают, если вы создаете HTML-документ содержимого модуля с помощью Sphinx, аналогичный документам Python. Там была бы гиперссылка. Однако он не работал бы специально в онлайн-справке. –

+0

@kdubs не вставляет значения в docstring, но это информация для пользователя, где можно найти эти значения. Когда я наберу «help (do_this)» или увижу «do_this» в источнике, я пойму, что для этих значений должен увидеть «help (mymodule.legal_values)». –

Смежные вопросы