python - 访问类实例的父模块的 __all__ 列表

标签 python class python-2.7 module namespaces

我有一个在模块 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/

相关文章:

jquery - 你能在 jQuery 中选择一个有两个类的元素吗

python - 错误 zip 参数 #1 必须支持迭代

python - python 2.7 交换的奇怪行为

Python Paramiko,权限错误: [Errno 13] Permission denied when get files from remote server

python - 为什么 MySQL 驱动程序/客户端(例如 MySQLdb 或 mysqlclient 或 PyMySQL)即使在像 Tornado 这样的异步 Web 框架中使用时也会被视为阻塞?

javascript - Jquery - 如何在文档区域中选择具有相同类名的 2 个元素?

c树结构表达式必须有类类型

python - 如何将 Python 2.7 解码更新到 Python 3.7

python - 在 x = 1 中,x 和 1 都是对象吗?

python - Python 中 Tictactoe 的极小极大算法