2015-09-04 59 views
1

我需要gettattr你的幫助(函數,__doc__) 這個作品,如果你定義 但蟒蛇gettattr(函數,__doc__)+文件解析

的文件中使用它,我想找到所有功能withing一個給定的文件,然後運行gettattr(函數,__doc__)所有返回的函數來獲取相關的文檔字符串

列出我的我用的模塊中的所有功能:

import module 
functionsList = [o for o in getmembers(module) if isfunction(o[1])] 

函數[0]是一個字符串,函數[1]是內存分配? 如果我想使用的功能作爲一個字符串我需要做的:

for function in functionList: 
    exec ("docStrings = "+function[0]+".__doc__") 
    print docStrings 

那麼我將有此錯誤:

錯誤:NameError:文件行1:名稱「anotherTestFunction」沒有定義

,我試圖直接使用功能

for function in functionList: 
    docStrings = gettattr(function[1], __doc__) 
    print docStrings 

這個時候,我沒有錯誤,但它重新轉身:無...

我可能會錯過一些東西...你有什麼想法嗎?

乾杯

+0

它確實有一個文檔字符串? (順便說一下,使用'inspect'模塊你可能會有更多的運氣) –

+0

是的,它有一個文檔字符串。所以我已經嘗試了dostring = inspect.getdoc(object)與function [1]作爲對象,並且我得到了相同的結果... – Goffer

+0

顯示對象'function [1]的源代碼的主體'是指您想要的 –

回答

0

所以最後...這是一個愚蠢的錯誤...... 我忘了 「」 各地_ _doc__ ... 它解決了一切。但在這種情況下,這是另一種方式。使用檢查

import module 
functionsList = [o for o in getmembers(module) if isfunction(o[1])] 

docString = functionsList.__doc__ 

這是工作!