![](/img/trans.png)
[英]Return documentation on class constructor method WITHOUT using help or .__doc__
[英]How print python method documentation using inspect or __doc__ method
我有以下代碼:
import os
import imp
import sys
import inspect
import urlparse
from cgi import escape
def get_module(ClassName, Path):
fp, pathname, description = imp.find_module(ClassName, [Path])
module_loaded = imp.load_module(ClassName, fp, pathname, description)
return module_loaded
def get_class_members(className):
print "Members of "+str(className)
member_functions = inspect.getmembers(className, predicate=inspect.ismethod)
for each_item in member_functions:
print each_item[0].__doc__
def get_all_classes(path, module):
module_loaded = None
sys.path.append(path)
module_loaded = get_module(module, path)
if None != module_loaded:
class_list = module_loaded.get_all_classes()
print "classes are "+str(class_list)
return class_list
def main():
class_list = get_all_classes('.', 'Class_Interface_File')
for each_class in class_list:
temp_module = get_module(each_class, '.')
my_class = getattr(temp_module, each_class)
instance = my_class()
get_class_members(instance)
print "-----------"
if __name__ == "__main__":
main()
Class_Interface_file返回一個類名列表示例['Social','Audio']我在方法get_class_members中有問題。 我想通過inspect.getmembers打印我發現的每個成員函數的注釋。 我不知道如何使用each_item的值來連接className。
或者是否可以直接打印來自each_item的成員函數的文檔?
請幫忙。
好的,有些玩弄你的代碼....
我在模塊三角形中有一個類Triangle,有一些方法。
>>>import inspect
>>>import triangle
>>>mems = inspect.getmembers(triangle.Triangle)
>>>mems
[('__doc__', None), ('__init__','<unboound method.....>), etc)]
getmembers()
返回元組列表。 所以在你的代碼循環中,你要求each_item[0].__doc__
,[0]引用包含函數名稱的字符串。 因此該行只返回字符串對象的__doc__
。 將其更改為[1]將返回實際方法的__doc__
:
>>>mems[3][0] #the name of the function itself
'drawEquilateral'
>>>#here I reference the second tuple element of the fourth member
...
>>>mems[3][1].__doc__
'draw an equilateral triangle'
>>>"Method %s: %s" %(mems[3][0], mems[3][1].__doc__)
'Method drawEquilateral: draw an equilateral triangle'
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.