如何在Python中获取使用__slots__的类的属性名称?
当我在Python中定义一个新式类时,我可以通过使用__dict__
这个属性来获取定义的属性(名字和值),它里面包含了一个字典,记录了这些东西。
我想在我的类和子类中使用槽(slots),因为我会创建成千上万的实例,想要节省一些内存。不过,使用__slots__
的类就没有__dict__
这个属性,所以我不能通过这种方式来访问它们的值。
有没有其他的方法,最好是能保持这些属性定义顺序的方法呢?
任何帮助都将非常感谢!
1 个回答
5
你应该使用dir()
这个内置函数来列出对象的成员,而不是直接访问__dict__
或__slots__
。
一个实例的__dict__
只会列出直接在这个实例上设置的属性,而dir()
会列出这个类及其父类上的所有属性(包括方法)。它还会列出任何定义为槽的内容。
你可以使用inspect
模块来帮助你过滤dir()
的输出;比如如果你对方法不感兴趣,inspect.ismethod()
可以派上用场。