【发布时间】:2015-06-23 19:42:04
【问题描述】:
我正在尝试使用dir 和getattr 的组合以编程方式访问某个Python3 对象的所有字段。伪代码如下:
x = some_object()
for i in dir(x):
print(str(getattr(x, i)))
但是,dir 上的 Python 文档 (https://docs.python.org/2/library/functions.html#dir) 非常含糊:
注意 因为提供 dir() 主要是为了方便在交互式提示中使用,所以它尝试提供一组有趣的名称,而不是尝试提供一组严格或一致定义的名称,并且它的详细行为可能跨版本更改。
我的问题: 1)有没有办法比使用dir更严格地实现上述目标? 2) “有趣的名称集”是什么意思,如何计算?
【问题讨论】:
-
解决方案可能取决于您为什么需要它。
-
您想要 Python 2 答案、Python 3 答案,还是两者兼有?我刚刚注意到您标记了 Python 3 问题,但您链接了 Python 2 文档。我的答案是在考虑 Python 2 的情况下编写的;其中一些在 Python 3 中略有不同,主要是代码所在的位置以及需要处理多少已弃用的内容。
-
抱歉,是的,正在寻找 python3。
标签: python-3.x