私は私がPythonでOOPを働いている今、マーク・ルッツブック第5版からのpythonを学んでいます。オペレータオーバーロードの概念があります。さて、オペレータのオーバーロードはどのようになっていますか。算術演算子など、本当に私にナットを駆動していることは、彼は家族を演算子オーバーロードに属する方法の一つとして、それを言って、クラスを演算子オーバーロードの代表としてpythonで基本的にコンストラクタある__init__方法に言及されているが、メソッド。それは実際にこのようなものか、自分のラインを考慮した私の認識が間違っていて、ちょうどそれがオペレータオーバーロードメソッドであるかどうかです!? 「演算子のオーバーロード」のHere is the reference to the topic.のPython演算子のオーバーロードと__init__メソッド
1
A
答えて
0
私の理解では、あなたがクラスを作るとき、あなたは標準のものが動作する方法を定義することができ効果的です。たとえば、加算演算子(+
)が代わりにそれらの合計を求めるアイテムを連結するために使用されるクラスを作成することができ(すなわち5+5==55
代わり5+5==10
の)。これと同じように あなたが__init__
を定義するとき、あなたは再定義している、またはその特定のクラスのための独自のを作るために標準「コンストラクタを」「のオーバーロード」。
1
は、私は、彼らがしているように、それは二重下線特別な方法だから__init__
は、オペレータの方法と一緒に記載されていると思います。しかし、多くの特殊メソッドは演算子とは関係がないので、それらをすべて「演算子オーバーロードメソッド」と呼ぶことは非常に誤解を招くことです。
このトピックについてはを読むことをお勧めします。__foo__
タイプのメソッドは単に「特殊メソッド」と呼ばれています。そのうちのいくつかは、実際のオペレータに関連しているが、他の多くは(__len__
、__iter__
、__format__
、__hash__
など)(など__str__
、__bool__
、__int__
、)タイプの間の変換や、いくつかの組み込み関数の実装に関連しています。他は通常、記述子プロトコルを実装する__get__
,__set__
、__delete__
のメソッドのように、間接的にしか実行されません。私は、演算子を実装するメソッドではなく、間接的に実行するメソッドで__init__
と__new__
をグループ化します。
関連する問題
- 1. オーバーロード=演算子Python
- 2. 演算子のオーバーロード演算
- 3. python +演算子オーバーロード問題
- 4. オーバーロード演算子 `[]`と ':'
- 5. 演算子の '='と '+'のオーバーロード
- 6. C++オーバーロード:[] []演算子のオーバーロード
- 7. 演算子のオーバーロード[]と=
- 8. テンプレートクラスと演算子のオーバーロード
- 9. 演算子のオーバーロード
- 10. 演算子のオーバーロード*
- 11. オーバーロード演算子+
- 12. 演算子オーバーロード==
- 13. C++演算子+演算子+ =オーバーロード
- 14. C++:演算子オーバーロード、演算子+
- 15. <<演算子とC++の文字列のオーバーロード+演算子
- 16. C++テンプレートとオーバーロード演算子
- 17. セグメンテーションフォールト&オーバーロード演算子
- 18. ポストインクリメント演算子オーバーロード
- 19. オーバーロード演算子+ char
- 20. クラス演算子*オーバーロード
- 21. 演算子オーバーロード+ BinaryTree
- 22. C++オーバーロード演算子++
- 23. カスタムイテレータ演算子オーバーロード
- 24. C++の演算子のオーバーロード
- 25. クラスの=演算子のオーバーロード
- 26. ClearScriptの演算子のオーバーロード
- 27. オーバーロード算術演算子
- 28. 演算子のオーバーロード>>
- 29. C++のオーバーロード()、[]演算子
- 30. + =イベント演算子のオーバーロード
新しいクラスの '__init__'を定義するときには、コンストラクタをオーバーロードしています。オペレータの定義が与えられれば、コンストラクタは演算子として見ることができます。 – Evert
'__init__'は' __call__'のコンポーネントで、 '()'演算子です。 –