回答
登記dir(foo)
。按照慣例,類名將是CamelCase中的類名。
如果foo
違反慣例,我猜你可能會得到類似[x for x in dir(foo) if type(getattr(foo, x)) == type]
這樣的類名,但這很醜並且可能非常脆弱。
您可以使用inspect模塊來執行此操作。例如:
import inspect
import foo
for name, obj in inspect.getmembers(foo):
if inspect.isclass(obj):
print name
我只有__class__作爲輸出,而不是真正的類名 – tapioco123 2011-12-15 23:00:19
嗯,我不知道爲什麼會這樣,對我來說工作正常,無論是標準庫模塊還是我自己編寫的模塊(使用Python 2.7) – obmarg 2011-12-15 23:52:17
您可以通過檢查發現dir(foo)
元素類型:類將有類型type
。
import foo
classlist = []
for i in dir(foo):
if type(foo.__getattribute__(i)) is type:
classlist.append(i)
從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)
。
你可以得到很多關於Python模塊的信息,說富,通過導入它,然後使用幫助(模塊名稱)如下:
>>> import foo
>>> help(foo)
- 1. 無法找到模塊名稱 - Python,Flask
- 2. 如何更改Python模塊名稱?
- 3. 如何查找angularjs提供程序的模塊名稱?
- 4. 查找Python模塊文件名
- 5. Python模塊名稱衝突
- 6. Python模塊名稱衝突
- 7. 在類中查找名稱
- 8. Python中的名稱空間和模塊
- 9. 如何檢查類或模塊是否有名稱空間?
- 10. 從python包中獲取模塊名稱
- 11. 如何查找類中的類實例變量的名稱。
- 12. 查找Jar名稱使用類名稱
- 13. 如何避免在python中導入模塊時一直寫模塊的名稱?
- 14. 如何將Python模塊導入與導入模塊名稱相同的包中?
- 15. 如何訪問從Python中的調用模塊調用模塊名稱空間?
- 16. 如何在Python中加載與其他模塊名稱相同的模塊?
- 17. 在Julia中查找封裝給定的模塊名稱?
- 18. 在類別模塊中顯示父類別名稱模塊
- 19. Python中的模塊名稱衝突,如何解決?
- 20. 如何查找包含模塊的模塊或類?
- 21. 如何從模塊中獲取擴展模塊的類的名稱?
- 22. C++模板中的名稱查找
- 23. 模板Haskell - 如何查找類型運算符名稱?
- 24. Python:如何從兩個模塊中導入具有相同名稱的類?
- 25. 衝突之間的名稱與模塊的類名稱和模塊的子類名稱
- 26. python確定導入模塊的名稱
- 27. python模塊的完全限定名稱
- 28. Python的同一模塊名稱公約
- 29. Python和衝突的模塊名稱
- 30. Sql查找表中的類似名稱
使用`ipython`;) – hugomg 2011-12-15 12:41:47
你只是試圖學習如何使用這個類,或者你在尋找類似名稱列表的東西? – Shep 2012-04-15 16:08:20