2015-05-09 48 views
3

我有一個在模塊m內定義的類SomeClass的實例。對於SomeClass的行爲,我需要訪問下面的列表:訪問類實例的父模塊的__all__列表

m.__all__ 

我怎樣才能從SomeClass實例訪問這個名單?的SomeClass

實例有以下內置:

SomeClass.__module__ 

然而,這是一個簡單的字符串。我怎樣才能訪問模塊本身及其屬性?

回答

3

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' 
相關問題