3
我有一個在模塊m
內定義的類SomeClass
的實例。對於SomeClass
的行爲,我需要訪問下面的列表:訪問類實例的父模塊的__all__列表
m.__all__
我怎樣才能從SomeClass
實例訪問這個名單?的SomeClass
實例有以下內置:
SomeClass.__module__
然而,這是一個簡單的字符串。我怎樣才能訪問模塊本身及其屬性?
我有一個在模塊m
內定義的類SomeClass
的實例。對於SomeClass
的行爲,我需要訪問下面的列表:訪問類實例的父模塊的__all__列表
m.__all__
我怎樣才能從SomeClass
實例訪問這個名單?的SomeClass
實例有以下內置:
SomeClass.__module__
然而,這是一個簡單的字符串。我怎樣才能訪問模塊本身及其屬性?
sys
模塊包含一個字典modules
,它將加載模塊的名稱映射到模塊本身。與SomeClass.__module__
一起,您可以使用此訪問從導入的模塊SomeClass
。
例如,對於一個模塊m.py
這樣的:
# m.py
__all__ = [
"A_CONSTANT",
"SomeClass",
]
A_CONSTANT = "foo"
class SomeClass: pass
...以下工作:
>>> from m import SomeClass
>>> SomeClass.__module__
'm'
>>> import sys
>>> sys.modules[SomeClass.__module__]
<module 'm' from '/path/to/m.py'>
>>> sys.modules[SomeClass.__module__].__all__
['SomeClass', 'A_CONSTANT']
>>> sys.modules[SomeClass.__module__].A_CONSTANT
'foo'