打印Python类的所有属性
打印Python类的所有属性
这个问题已经有答案了:
我有一个类Animal,有多个属性,例如:
class Animal(object): def __init__(self): self.legs = 2 self.name = 'Dog' self.color= 'Spotted' self.smell= 'Alot' self.age = 10 self.kids = 0 #many more...
现在我想将所有这些属性打印到文本文件中。我现在所做的丑陋方式是:
animal=Animal() output = 'legs:%d, name:%s, color:%s, smell:%s, age:%d, kids:%d' % (animal.legs, animal.name, animal.color, animal.smell, animal.age, animal.kids,)
是否有更好的Pythonic方式来做到这一点?
admin 更改状态以发布 2023年5月20日
另一种方法是调用dir()
函数(参见https://docs.python.org/2/library/functions.html#dir)。
a = Animal() dir(a) >>> ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'color', 'kids', 'legs', 'name', 'smell']
请注意,dir()
会尝试访问所有可能访问的属性。
然后,您可以通过使用双下划线进行过滤,访问这些属性:
attributes = [attr for attr in dir(a) if not attr.startswith('__')]
这只是使用dir()
可以实现的示例,请查看其他答案来了解正确的操作方式。