python - 为什么 Python 没有隐式转换?

标签 python concatenation

<分区>

与 C++ 或 Java 不同,每当我有类似 print "Hello "+ 1 的内容时,我都会收到无法连接 str 的错误int 对象。为什么这种转换不在 Python 中隐式完成?

最佳答案

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)

关于python - 为什么 Python 没有隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161402/

相关文章:

python - 如何计算满足给定条件的向量的所有排列

python - 如何将开始日期和结束日期之间的所有工作日加载到数据框?

excel - 根据左列单元格组合相邻行单元格

mysql - 按主机分组的每日最大玩家数

MySQL将年月日期列连接到同一表中的日期列

python - 连接没有顶行的大文件 - python 或 bash?

python - 在数组中导入数据集时,谷歌 Colab 中的 ram 用完了

python - 在 numpy 矩阵行上应用函数并连接结果?

python - OpenCV cv2.rectangle 输出二值图像

MySQL:使用串联创建 View - 语法错误