Python 3で組み込みクラスの演算子をオーバーロードすることはできますか?私は、このような"This is a " + class(bla)
ようなことを行うことができるようにあなたがstr
の__add__
を変更することはできません、Pythonで組み込みクラスの演算子をオーバーロードすることはできますか?
答えて
を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")
。
http://rafekettler.com/magicmethods.html – HashSplat
働いて、ありがとう。 1つの質問 - それをお勧めしませんか? – Joe
@ Joe:文字列に追加すると文字列に自動的に変換するものはほとんどありません。 Pythonの規約は、明示的に文字列変換を行うことです。 – user2357112
- 1. 組み込み型の演算子オーバーロード
- 2. 組み込み型の演算子をオーバーロードする
- 3. C++:[]演算子の読み込みアクセスと書き込みアクセスのオーバーロード
- 4. 変換コンストラクタを演算子のオーバーロードと組み合わせる
- 5. 組み込み演算子はどこに定義されていますか?
- 6. オーバーロード>>演算子と読み込みChar(C++)
- 7. 組み込み演算子をモックする方法
- 8. Postgresのカスタム演算子の優先順位は組み込みですか?
- 9. クラス演算子*オーバーロード
- 10. Python:AND演算子とNOT演算子を組み合わせますか?
- 11. オーバーロード=演算子Python
- 12. Pythonの組み込み識別子とは何ですか?
- 13. 組み込みクラス関数への演算子の割り当て
- 14. クラスの=演算子のオーバーロード
- 15. Cで演算子をオーバーロードすることはできますか?
- 16. C#でnameof演算子をオーバーロードすることはできますか?
- 17. 演算子 "..."をC++でオーバーロードすることはできますか?
- 18. C#のオーバーロード演算子==クラス
- 19. 子クラスは、親のアライメント演算子のオーバーロードを使用できますか?
- 20. 文字列の〜演算子をオーバーロードすることはできますか?
- 21. Octaveで組み込み関数をオーバーロードするときの組み込み関数の不一致
- 22. Pythonでブール演算子を使用するためのビット演算子のオーバーロード
- 23. python +演算子オーバーロード問題
- 24. 演算子オーバーロード - ここ>
- 25. クラスの演算子[]をオーバーロードするので、テンプレートクラスの配列からオブジェクトを返すことができます
- 26. のPython演算子のオーバーロードと__init__メソッド
- 27. オーバーロード演算子 `[]`と ':'
- 28. 同じクラスの代入として、逆参照としての()演算子と=演算子の両方をオーバーロードすることはできますか?
- 29. 演算子のオーバーロード演算
- 30. ハスケル!!演算子の組み合わせ
あなたは実際に*過負荷*を意味しますか(つまり、あなたは 'str'をサブクラス化しています)、あるいは実際にサルのパッチにしたいですか?なぜ、 'str.format'を読んでいないコードにあなたの方法をハッキングするのではなく使うのですか? – jonrsharpe