这个问题在这里已有答案:
在Java中,我可以覆盖我的类的 toString()
方法 . 然后Java的print函数打印由 toString()
定义的对象的字符串表示 . 是否有一个Python等同于Java的 toString()
?
例如,我有一个PlayCard课程 . 我有一个PlayCard的实例c . 现在:
>>> print(c)
<__main__.Card object at 0x01FD5D30>
但我想要的是:
>>> print(c)
A♣
如何自定义类实例的字符串表示形式?
我正在使用Python 3.x.
2 回答
与Java的
toString
最接近的是为您的类实现__str__
. 把它放在你的类定义中:您可能还想实现
__repr__
来帮助调试 .浏览此处获取更多信息:
这并不像看起来那么容易,当只有 str 被覆盖时(使用Python 2.7检查),某些核心库函数不起作用,请参阅此帖子以获取示例How to make a class JSON serializable另外,试试这个
产生
并不是
正如所料 .
EDIT :回答mchicago的评论:
unicode没有任何属性 - 它是一个不可变的字符串,其值是隐藏的,不能从高级Python代码中获得 .
json
模块使用re
生成字符串表示,该表示似乎可以访问此内部属性 . 这是一个简单的例子来证明这一点:b = A('b') print b
产生
'a'
而
json.dumps({'b': b})
产生
{"b": "b"}
因此,您可能会看到内部表示由某些本机库使用,可能是出于性能原因 .
有关详细信息,请参阅此内容:http://www.laurentluce.com/posts/python-string-objects-implementation/