【问题标题】:How to get the names of attributes when classes in Python use __slots__?Python中的类使用__slots__时如何获取属性的名称?
【发布时间】:2013-01-15 21:14:11
【问题描述】:

当我在 Python 中定义一个新样式的类时,我可以使用包含事物字典的 __dict__-Attribute 来获取定义的属性(名称和值)。

我想在我的类及其子类中使用槽,因为我将创建数十万个实例并希望节省一些内存。但是,确实使用__slots__ 的类将没有__dict__-Attribute,因此我不能以这种方式反射性地访问它们的值。

是否有另一种方式,更可取的是保留为此类定义的属性的顺序?

任何帮助将不胜感激!

【问题讨论】:

标签: python inheritance reflection slots


【解决方案1】:

您应该使用dir() built-in function 列出对象的成员,而不是直接访问__dict____slots__

实例__dict__ 将仅列出直接在实例上设置的属性,而dir() 将列出类和该类的基类的属性(包括方法)。它还会列出任何定义为插槽的内容。

您可以使用inspect module 来帮助您过滤dir() 的输出;如果您对方法不感兴趣,例如 inspect.ismethod() 可以提供帮助。

【讨论】:

猜你喜欢
  • 2017-11-19
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 2020-10-07
  • 1970-01-01
  • 2012-01-08
  • 2013-11-27
  • 1970-01-01
相关资源
最近更新 更多