我有一个类SomeClass
的实例,它在模块m
中定义。对于SomeClass
的行为,我需要访问以下列表:
m.__all__
如何从SomeClass
?
SomeClass
的实例具有以下内置:
SomeClass.__module__
但是,这只是一个字符串。如何访问模块本身及其属性?
答案 0 :(得分:4)
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'