Cem*_*mre 3 python concatenation
可能重复:
为什么Python在连接字符串时不执行类型转换?
与c ++或java不同,只要我有类似的东西print "Hello " + 1.我得到一个错误,它无法连接str和int对象.有没有理由为什么这种转换不像其他语言那样隐式地进行?
print "Hello", 1
Run Code Online (Sandbox Code Playgroud)
连接不起作用的原因是字符串对象中没有任何代码来执行类型转换作为其__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__
Run Code Online (Sandbox Code Playgroud)
当然,没有办法让Python将该类用于字符串文字或用户输入,因此您不得不经常转换字符串:
MagicStr("Hello") + 1
Run Code Online (Sandbox Code Playgroud)
你可以在这一点上写下:
"Hello" + str(1)
Run Code Online (Sandbox Code Playgroud)