2012-10-21 26 views
0

我有一個問題,我希望你能爲我提供一個答案。在python中獲取一個類中的函數的數量?

我想創建一個函數,返回存儲在一個python文件中的類內的函數的數量..是否有一個很好的方式來做到這一點?

+2

如何你定義'函數'嗎? – iMom0

+0

你如何定義「存儲在python文件中」? –

回答

1

您還可以使用inspect模塊:

class Test(object): 
    def a(self): 
     pass 
    def b(self): 
     pass 


>>>>inspect.getmembers(Test, inspect.ismethod) 
[('a', <unbound method Test.a>), ('b', <unbound method Test.b>)] 
>>>>len(_) 
2 

像這樣的東西應該爲你的第二個問題的工作:

import foo 
import inspect 

for a,b in inspect.getmembers(foo, inspect.isclass): 
    print a 
    print len(inspect.getmembers(b, inspect.ismethod)) 
+0

非常感謝您的回答,真的有幫助 – tkyass

+1

這應該是首選方法 – Abhijit

+0

@ user1762447歡迎您:) –

3

我曾嘗試:

>>> import types 

>>> class Test(object): 
    def a(self): 
     pass 
    def b(self): 
     pass 

>>> len([i for i in Test.__dict__.itervalues() if isinstance(i, types.FunctionType)]) 
2 
+0

非常感謝它非常有幫助,,但我仍然有一個問題,即類名是在其他文件中,我不知道這裏有名字是我的代碼 進口類型 進口富 進口檢查 數= 0 如果inspect.isclass(b): print a print len([i for i .__ dict __。itervalues()if isinstance(i,types.FunctionType)] ) 但它給我一個.__ dicit__錯誤,我需要指定類名,所以有什麼辦法可以做到這一點? – tkyass

+0

如果您使用'inspect',請參閱@KayZhu的答案。 – iMom0

+0

@ user1762447我已更新第二個問題的答案。 –

相關問題