如何为类对象创建自定义字符串表示?

新手上路,请多包涵

考虑这个类:

 class foo(object):
    pass

默认的字符串表示形式如下所示:

 >>> str(foo)
"<class '__main__.foo'>"

我怎样才能使这个显示自定义字符串?

原文由 Björn Pollex 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 578
2 个回答

在类的元类中实现 __str__()__repr__()

 class MC(type):
  def __repr__(self):
    return 'Wahaha!'

class C(object):
  __metaclass__ = MC

print(C)

使用 __str__ 如果你的意思是可读的字符串化,使用 __repr__ 用于明确的表示。

编辑:Python 3 版本

class MC(type):
  def __repr__(self):
    return 'Wahaha!'

class C(object, metaclass=MC):
    pass

print(C)

原文由 Ignacio Vazquez-Abrams 发布,翻译遵循 CC BY-SA 4.0 许可协议

class foo(object):
    def __str__(self):
        return "representation"
    def __unicode__(self):
        return u"representation"

原文由 Andrey Gubarev 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题