我有一个在模块 m
中定义的类 SomeClass
的实例。对于 SomeClass
的行为,我需要访问以下列表:
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'
关于python - 访问类实例的父模块的 __all__ 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30139666/