如何知道哪些成員模塊/軟件包定義?通過定義我的意思是:所有成員包/模塊定義?
somemodule.py
import os # <-- Not defined in this module
from os.path import sep # <-- Not defined in this module
I_AM_ATTRIBUTE = None # <-- Is defined in this module
class SomeClass(object): # <-- Is defined also...
pass
所以我需要某種形式的函數調用時會產生只有I_AM_ATTRIBUTE
和SomeClass
。我如何知道somemodule
中定義了哪些?檢查__module__
不起作用,因爲它沒有在模塊和屬性中定義(例如os
包或sep
屬性)。
顯然野生進口(from somemodule import *
)也無法過濾這些,所以它甚至有可能嗎?
盡我所能得到的是:
import somemodule
for name in dir(somemodule):
try:
value = getattr(somemodule, name)
except:
pass
else:
if hasattr(value, "__module__"):
if value.__module__ != somemodule.__name__:
continue
if hasattr(value, "__name__"):
if not value.__name__.startswith(__name__):
continue
print "somemodule defines:", name
注意到os
出來,但葉sep
。
閱讀源代碼有什麼問題?你可以通過閱讀來細想這一點嗎?爲什麼不簡單閱讀? – 2010-01-13 11:07:30