可能重复:
Why does Python not perform type conversion when concatenating strings?
与c ++或java不同,每当我有print "Hello " + 1
之类的东西时。我收到一个错误,它无法连接str
和int
个对象。有没有理由为什么这种转换不像其他语言那样隐式地进行?
答案 0 :(得分:7)
print "Hello", 1
连接不起作用的原因是字符串对象中没有任何代码可以作为__add__()
方法的一部分执行类型转换。至于为什么,据说Guido认为这是一个坏主意。 Python的禅宗说“明确比隐含更好。”
你可以写一个以这种方式工作的字符串子类,但是:
class MagicStr(str):
def __add__(self, other):
return MagicStr(str(self) + str(other))
def __radd__(self, other):
return MagicStr(str(other) + str(self))
__iadd__ = __add__
当然,没有办法让Python将该类用于字符串文字或用户输入,因此您不得不经常转换字符串:
MagicStr("Hello") + 1
此时您可以写下:
"Hello" + str(1)