之前在用 c# 時,可以使用 reflection 來查找類別可以使用的方法或屬性,甚至是函式庫裡有什麼類別、函式可以使用。在 Python 可以用 inspect 模組來達成這件事情:How to list all functions in a Python module?
例如要列出模組裡所有的函式,可以這樣用:
from inspect import getmembers, isfunction
from somemodule import foo
print(getmembers(foo, isfunction))
或是要找出名字裡有 castle 的成員,像是函式、類別等等的:
import inspect
import example
for name, data in inspect.getmembers(example):
if 'castle' not in name:
continue
print('{} : {!r}'.format(name, data))
或是要找類別名稱是 XXXManager 的類別:
import inspect
import example
for name, data in inspect.getmembers(example, inspect.isclass):
if name.endswith('Manager'):
print('{} : {!r}'.format(name, data))
要撈 docstring 也可以,更多的用法可以參考 PyMOTW: inspect — Inspect Live Objects
Python 網站上的文件:inspect – Inspect Live Objects
沒有留言:
張貼留言