2016-05-27 8 views
0

Python 3で組み込みクラスの演算子をオーバーロードすることはできますか?私は、このような"This is a " + class(bla)ようなことを行うことができるようにあなたがstr__add__を変更することはできません、Pythonで組み込みクラスの演算子をオーバーロードすることはできますか?

+0

あなたは実際に*過負荷*を意味しますか(つまり、あなたは 'str'をサブクラス化しています)、あるいは実際にサルのパッチにしたいですか?なぜ、 'str.format'を読んでいないコードにあなたの方法をハッキングするのではなく使うのですか? – jonrsharpe

答えて

1

strクラスの__add__オペレーターをしていますが、することができます。具体的には、私は、すなわち(+/+=をオーバーロードしたいのですが文字列にクラスを追加する方法を定義します。私も、それをお勧めしません。"asdf" + thing

class MyClass(object): 
    ... 
    def __add__(self, other): 
     if isinstance(other, str): 
      return str(self) + other 
     ... 
    def __radd__(self, other): 
     if isinstance(other, str): 
      return other + str(self) 
     ... 

"asdf".__add__が加算を処理する方法を知らない場合、Pythonはしようとthing.__radd__("asdf")

+0

http://rafekettler.com/magicmethods.html – HashSplat

+0

働いて、ありがとう。 1つの質問 - それをお勧めしませんか? – Joe

+0

@ Joe:文字列に追加すると文字列に自動的に変換するものはほとんどありません。 Pythonの規約は、明示的に文字列変換を行うことです。 – user2357112

関連する問題