【发布时间】:2014-11-07 10:07:20
【问题描述】:
使用Python解释器时,只写
3+4
导致它打印“7”
但是当导入一些类('Something',它有自己的 str 和 add 实现)并执行以下操作时:
a=Something(var2)
b=Something(var2)
a+b
解释器只是打印一条消息报告该操作(编辑:我的意思是消息类。位于 0xspam 的某物对象...,它是 repr 实际未实现时的输出,当我认为我会得到类似 str) 的输出时,它不会打印刚刚创建的新对象的 str 版本
为什么会这样?怎么改?
编辑: 问题与 str 和 repr 所做的混淆有关(当我问这个问题时,我不知道 repr 存在) ,我认为对于一个类来说,实现 str 既能够从对象获取字符串,又能够将其直接打印到解释器而无需编写“打印”就足够了。但后者实际上是通过适当地实施 repr 来完成的
【问题讨论】:
-
什么是“报告操作的消息”?通常,解释器不会打印任何此类内容。它只打印提示、结果的 repr 和异常的回溯。
-
“报告操作的消息”是指repr 的结果,但直到现在我才知道repr,这就是我最初的问题的答案。谢谢大家。
-
我不确定这是不是一个骗局,但你一定要阅读Difference between str and repr,
repr上的规范问题。
标签: python class object interpreter