2011-12-15 60 views

回答

2

登記dir(foo)。按照慣例,類名將是CamelCase中的類名。

如果foo違反慣例,我猜你可能會得到類似[x for x in dir(foo) if type(getattr(foo, x)) == type]這樣的類名,但這很醜並且可能非常脆弱。

8

您可以使用inspect模塊來執行此操作。例如:

import inspect 
import foo 

for name, obj in inspect.getmembers(foo): 
    if inspect.isclass(obj): 
     print name 
+0

我只有__class__作爲輸出,而不是真正的類名 – tapioco123 2011-12-15 23:00:19

+1

嗯,我不知道爲什麼會這樣,對我來說工作正常,無論是標準庫模塊還是我自己編寫的模塊(使用Python 2.7) – obmarg 2011-12-15 23:52:17

0

您可以通過檢查發現dir(foo)元素類型:類將有類型type

import foo 
classlist = [] 
for i in dir(foo): 
    if type(foo.__getattribute__(i)) is type: 
     classlist.append(i) 
1

從qeustion How to check whether a variable is a class or not?我們可以檢查,如果一個變量是一個類或不與inspect模塊(例如代碼接受的答案無恥地解除):

>>> import inspect 
>>> class X(object): 
...  pass 
... 
>>> inspect.isclass(X) 
True 

所以要建立一個列表所有從模塊中的類,我們可以使用

import foo 
classes = [c for c in dir(foo) if inspect.isclass(getattr(foo, c))] 

更新:以上實例H按照Chris Morgan的評論,被編輯爲使用getattr(foo, c)而不是使用foo.__getattribute__(c)

0

你可以得到很多關於Python模塊的信息,說富,通過導入它,然後使用幫助(模塊名稱)如下:

>>> import foo 
>>> help(foo)