我已經在Google上搜索它,但是我沒有運氣。Python是否有一個方法返回模塊中的所有屬性?
1
A
回答
4
import module
dir(module)
0
您正在尋找dir
:
import os
dir(os)
??dir
dir([object]) -> list of strings
If called without an argument, return the names in the current scope.
Else, return an alphabetized list of names comprising (some of) the attributes
of the given object, and of attributes reachable from it.
If the object supplies a method named __dir__, it will be used; otherwise
the default dir() logic is used and returns:
for a module object: the module's attributes.
for a class object: its attributes, and recursively the attributes
of its bases.
for any other object: its attributes, its class's attributes, and
recursively the attributes of its class's base classes.
0
因爲它已被正確地指出的那樣,dir
函數會返回一個列表,在一個給定對象的所有可用的方法。
如果您從命令提示符調用dir()
,它將使用啓動時可用的方法進行響應。如果您致電:
import module
print dir(module)
將打印在模塊module
所有可用的方法列表。你只關心公共方法(那些你應該是使用)次數最多的 - 按照慣例,Python的私有方法和變量開始__
,所以我做的是以下幾點:
import module
for method in dir(module):
if not method.startswith('_'):
print method
那這樣,你只打印公共方法(可以肯定的 - 在_
僅僅是一個約定,許多模塊的作者,可能無法按照約定)
dir
內置
7
,有inspect
模塊其中有一個非常好的getmembers
方法。與pprint.pprint
結合你有一個強大的組合
from pprint import pprint
from inspect import getmembers
import linecache
pprint(getmembers(linecache))
一些樣本輸出:
('__file__', '/usr/lib/python2.6/linecache.pyc'),
('__name__', 'linecache'),
('__package__', None),
('cache', {}),
('checkcache', <function checkcache at 0xb77a7294>),
('clearcache', <function clearcache at 0xb77a7224>),
('getline', <function getline at 0xb77a71ec>),
('getlines', <function getlines at 0xb77a725c>),
('os', <module 'os' from '/usr/lib/python2.6/os.pyc'>),
('sys', <module 'sys' (built-in)>),
('updatecache', <function updatecache at 0xb77a72cc>)
注意,與dir
你能看到的是,成員的實際值。您可以對getmembers
應用類似於您可以應用到dir
的篩選器,他們可以更強大。例如,
def get_with_attribute(mod, attribute, public=True):
items = getmembers(mod)
if public:
items = filter(lambda item: item[0].startswith('_'), items)
return [attr for attr, value in items if hasattr(value, attribute]
0
dir
是你所需要的:)
相關問題
- 1. Python的方法目錄()不返回所有屬性/方法
- 2. 是否有一個ruby方法只返回一個塊的值?
- 3. 屬性是否有方法?
- 4. 有一個屬性裝飾方法在Python中返回一個類可以嗎?
- 5. python模塊沒有屬性
- 6. 如何返回單個屬性而不是所有模型
- 7. Python是否將模塊路徑中的所有模塊導入?
- 8. python c擴展模塊中沒有返回值的方法
- 9. 使用Yii findAll返回一個模型W /所有屬性
- 10. 子類是否具有父類的所有屬性和方法?
- 11. requirejs返回一個帶有attach和notNeeded方法的模塊
- 12. 是否有可能結束一個像返回類似的Python模塊導入?
- 13. 在Python中導入模塊的所有方法是什麼?
- 14. 返回字典的所有屬性的通用方法
- 15. ()方法返回所有的模型實例,而不是一個實例中laravel
- 16. 是否有一種方法在Objective-C中具有僞屬性?
- 17. 是否有可能創建一個模塊或父類,使Ruby中的所有方法類方法?
- 18. 是否有一個從python csv模塊構建的方法來枚舉特定列的所有可能的值?
- 19. Python請求:Response.text屬性返回一個不是值的模板
- 20. 如何返回所有模塊的JSON?
- 21. 有沒有更好的方法來確定是python中的一個模塊
- 22. 具有隻讀屬性的模擬方法返回值
- 23. 是否有一個屬性忽略了設計時的方法?
- 24. 返回所有屬性值的函數
- 25. Python:如何從模塊動態導入所有方法和屬性
- 26. 類的所有方法是否返回其實例的地址?
- 27. 顯示的所有方法Python文檔和模塊具有一定的文字屬性
- 28. 是否有python模塊來求解線性方程組?
- 29. 所有Java屬性的方法是否完全同步?
- 30. 是否有對所需屬性(OOP)的「pythonic」方法?