【发布时间】:2021-06-21 14:20:08
【问题描述】:
我想找到一种通用的方式来列出 python 对象的属性(名称和值),但要简洁。
这在使用vars() 时效果很好,但是如果没有__dict__,则不能使用它;而dir() 充满了无趣的属性。
我知道这有点随机,但 PyCharm 正在以某种方式做类似的事情,这是 numpy ndarray 对象的示例,它没有 __dict__; dir() 包含 161 个属性。我试图从dir() 中删除私有和可调用值,但仍然有几十个。
知道 PyCharm 是如何做到的吗?例如,他们是否有可能对numpy 对象进行特殊处理?
【问题讨论】:
-
“无趣”的属性集很大,但可以预测。如果它们只是被明确过滤,我不会感到惊讶。
-
感谢您的评论,您是否知道我在哪里或如何找到这些可预测值列表的来源或想法? @chepner
-
我不认为它已发布,但您可以通过查看
dir(x)来构建一个有用的列表,其中包含许多不同类型的x值。 (不过,其中大部分是 CPython 实现细节。如果您可以将 PyCharm 设置为使用pypy之类的东西,看看会发生什么变化,看看会发生什么,这会很有趣。) -
我敢打赌 PyCharm 有专门的代码来显示 numpy 数组、pandas 系列等,因为这些是流行的库,而不是使用通用对象解码器。
标签: python