如何在Python中获取使用__slots__的类的属性名称?

0 投票
1 回答
1096 浏览
提问于 2025-04-17 14:20

当我在Python中定义一个新式类时,我可以通过使用__dict__这个属性来获取定义的属性(名字和值),它里面包含了一个字典,记录了这些东西。

我想在我的类和子类中使用槽(slots),因为我会创建成千上万的实例,想要节省一些内存。不过,使用__slots__的类就没有__dict__这个属性,所以我不能通过这种方式来访问它们的值。

有没有其他的方法,最好是能保持这些属性定义顺序的方法呢?

任何帮助都将非常感谢!

1 个回答

5

你应该使用dir()这个内置函数来列出对象的成员,而不是直接访问__dict____slots__

一个实例的__dict__只会列出直接在这个实例上设置的属性,而dir()会列出这个类及其父类上的所有属性(包括方法)。它还会列出任何定义为槽的内容。

你可以使用inspect模块来帮助你过滤dir()的输出;比如如果你对方法不感兴趣,inspect.ismethod()可以派上用场。

撰写回答