2014-02-17 54 views
2

我有開始這樣的功能:爲什麼我不能在docstrings中使用format函數?

def apply_weighting(self, weighting): 
    """ 
    Available functions: {} 
    """.format(weightings) 

我想是的文檔字符串打印的可用加權函數的字典。但是在檢查功能時指出沒有可用的文檔字符串:

In [69]: d.apply_weighting? 
Type:  instancemethod 
String Form:<bound method DissectSpace.apply_weighting of <dissect.DissectSpace instance at 0x106b74dd0>> 
File:  [...]/dissect.py 
Definition: d.apply_weighting(self, weighting) 
Docstring: <no docstring> 

怎麼回事?格式化文檔字符串是不可能的嗎?

+1

,如果你的文檔字符串是很通用,你可以在它使用formatstrnig ...是否有任何真正的優勢,有它? –

+0

@JoranBeasley權重包含一個字符串 - >函數字典,其中包含我可以應用的所有可用權重函數。通過在文檔字符串中隨時提供它們,查找要使用的是容易的。 –

回答

5

Python解釋器僅查找字符串。不支持添加.format()方法調用,不支持函數定義語法。它是編譯器解析出文檔字符串,而不是解釋器,並且當時沒有像weightings這樣的變量;目前沒有代碼執行。

你可以在事後總是更新文檔字符串:

def apply_weighting(self, weighting): 
    """ 
    Available functions: {} 
    """ 

apply_weighting.__doc__ = apply_weighting.__doc__.format(weightings) 
+0

明白了,謝謝! –

相關問題