如何打印Python类的所有属性?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (38)

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

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,)

有没有python的方法吗?

提问于
用户回答回答于

另一种方法是调用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']

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

attributes = [attr for attr in dir(a) 
              if not attr.startswith('__')]

热门问答

COS范围下载?

许金泉

腾讯 · 高级工程师 (已认证)

腾讯云COS前端开发
推荐
可以用标准 Http 头部 Range 来指定下载范围。 COS 的 SDK 应该都支持自定义 Header,可以设置: Range: 'bytes=2000-7999' 和 Range: 'bytes=9000-9599'... 展开详请

cmq的Queue Endpoint 订阅-消费问题?

请您查看一下您的根账号下是否有持久密钥? 如果无法解决您的问题,请您在控制台的右上角发起工单提问(https://console.cloud.tencent.com/workorder),我们会有专人进行问题排查和解决,感谢您使用CMQ消息队列服务

我开通了直播,现在可以使用二维码扫码播放,但是我想在播放的界面,加一个发红包的功能,该怎么做?

腾讯云-chaoli腾讯云产品二部,技术支持
推荐
使用云通信功能,可以实现发红包。http://faq.qcloudtrtc.com/docs/%E4%BA%91%E9%80%9A%E8%AE%AF%E6%A8%A1%E5%9D%97/%E6%B6%88%E6%81%AF%E9%97%AE%E9%A2%98.html?h=%E7...... 展开详请

rtmp 推流,但是环境噪音被放大了,请问这个怎么设置,是否有消除噪音的方法?

腾讯云-chaoli腾讯云产品二部,技术支持
推荐
你好TXLivePushConfig有降噪接口:setANS。 SDK 对于 32000Hz 的音频数据是支持降噪的,现在 SDK 都是 48000Hz 采样率的了,不支持使用降噪接口了。 噪音太大通常原因是采集端和播放端距离过近造成的声音循环采集,可以将两台设备离远一些(3m ...... 展开详请

域名备案小程序登陆不上?

推荐已采纳
首先,用小程序不用幕布照片了 其次上述登录失败问题,可以参考以下操作: 1. 删除小程序; 2. 删掉微信进程; 3. 重新打开微信或建议客户使用其他机型试下,苹果7有这个问题,如果还是操作不了,可以让客户工单提供下机型、手机版本。... 展开详请

腾讯云直播 ,后台能否设置付费才能观看视频,和主持人设置禁言?

腾讯云-chaoli腾讯云产品二部,技术支持
推荐

可以做到:有直播地址就能播放,业务后台不给终端下发直播地址,就能限制观看直播。禁言功能,是指连麦时的禁言功能吗?有setMute静音接口

所属标签

扫码关注云+社区