4

重複の可能性:
文字列を連結するときにPythonが型変換を実行しないのはなぜですか?

C ++やJavaとは異なり、のようなものがあるときはいつでもprint "Hello " + 1。連結できないというエラーが表示されstrますint。この変換が他の言語のように暗黙的に行われない理由はありますか?

4

1 に答える 1

8
print "Hello", 1

連結が機能しない理由は、文字列オブジェクトには、__add__()メソッドの一部として型変換を実行するためのコードが含まれていないためです。理由は、おそらくグイドは悪い考えだと思ったのでしょう。PythonのZenは、「暗黙的よりも明示的の方が優れている」と述べています。

ただし、このように機能する文字列サブクラスを作成できます。

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)
于 2012-08-28T14:26:12.743 に答える