2016-03-18 14 views
3

Cmd modülünü kullanıyorum. Böyle belgelemek istiyorum bir komut var:python - doc dizesinde bir değişken nasıl bulunur?

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

muhakeme Sadece bir kez yasal değerlerin o listeyi yazı yazmak istediğiniz olmak. Dokunu daha sonra değiştirebileceğimi buldum, ama bence bu bir hack. Bunu yapmanın bir yolu var mı?

cevap

5

Dokümanı sonradan değiştirmek (do_this.__doc__'a atayarak) tek yoldur.

Veya daha güzel görünmesini isterseniz, bir dekoratör kullanabilirsiniz - ancak yine de do_this.__doc__'a atar. değişkene bu değerlere sahip olarak

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

Sen dekoratör için 'functools.wraps' kullanmalıyım? – gerrit

+0

@gerrit negative, bu bir wrapper değil (iç cümlenin adını 'document' olarak yeniden adlandırdı) –

+0

zeki, dekoratörleri kontrol etmek zorundayım. Python için yeniyim ve bu noktada bir itfaiyeden içiyorum gibi hissediyorum. Bu konuda – kdubs

1

, dokümanın kendisine başvurabilirsiniz: Hiçbir şey kaybetmemeniz için

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

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

bunu denedi. işe yaramadı. bunlar legal_values ​​etrafında backticks vardır? – kdubs

+0

Kydiler, Python belgelerine benzer şekilde, Sphinx kullanarak modül içeriğinin bir HTML belgesini yaparsanız çalışırlar. Orada bir köprü olurdu. Yine de çevrimiçi 'yardımda 'işe yaramazdı. –

+0

Kdubs, değerleri docstring'e eklemez, ancak bu değerleri bulmak için kullanıcı bilgileridir. "Help (do_this)" yazacağım ya da "do_this" kaynağını göreceğimde, bu değerler için 'help (mymodule.legal_values)' i görmem gerektiğini anlayacağım. –

İlgili konular