首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >打印Python类的所有属性

打印Python类的所有属性
EN

Stack Overflow用户
提问于 2011-05-12 03:51:36
回答 6查看 322.1K关注 0票数 222

我有一个Animal类,它有几个属性,比如:

代码语言:javascript
复制
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...

现在,我想将所有这些属性打印到一个文本文件中。我现在使用的丑陋方式是这样的:

代码语言:javascript
复制
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方法来做这件事?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-05-12 04:01:40

在这个简单的例子中,您可以使用vars()

代码语言:javascript
复制
an = Animal()
attrs = vars(an)
# {'kids': 0, 'name': 'Dog', 'color': 'Spotted', 'age': 10, 'legs': 2, 'smell': 'Alot'}
# now dump this in some way or another
print(', '.join("%s: %s" % item for item in attrs.items()))

如果你想在磁盘上存储Python对象,你应该看看shelve — Python object persistence

票数 391
EN

Stack Overflow用户

发布于 2011-05-12 04:10:30

另一种方法是调用dir()函数(请参阅https://docs.python.org/2/library/functions.html#dir)。

代码语言:javascript
复制
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()会尝试访问任何可能访问的属性。

然后,您可以访问属性,例如,使用双下划线进行筛选:

代码语言:javascript
复制
attributes = [attr for attr in dir(a) 
              if not attr.startswith('__')]

这只是一个使用dir()可以做什么的例子,请检查其他答案以了解正确的方法。

票数 98
EN

Stack Overflow用户

发布于 2011-05-12 04:09:05

也许你正在寻找这样的东西?

代码语言:javascript
复制
    >>> class MyTest:
        def __init__ (self):
            self.value = 3
    >>> myobj = MyTest()
    >>> myobj.__dict__
    {'value': 3}
票数 66
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5969806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档