0

クラスに関数を実装すると、Python は内部的に "==" をオーバーロードし__cmp__ますか? C++ でどのように行うのですか?

ちょっと興味があるんだけど。私はpythonが初めてです。:)

4

4 に答える 4

3

Python コードで使用される asの意味は==、 を定義すると変わります__cmp__。この特定の意味で、Python レベルの "==-operator" は、 の定義によって変更されます__cmp__(これは、 も定義していない場合にのみ当てはまることに注意してください__eq__)。

ただし、operator==C++ レベルの は、次の 2 つの理由から、この影響を受けません。

  • Python は C++ ではなく C で実装されており、演算子のオーバーロードはありません。
  • Python コードを作成または使用する場合、Python 自体は再コンパイルされません。
于 2013-01-21T06:49:30.003 に答える
1

__eq__はい、、、、 および ( doc__ne__ __lt__ ) とともに__le____gt____ge__

于 2013-01-21T06:48:29.920 に答える
1

何に対して?それがためのもの__cmp__です。

しばらく非推奨でしたが、3 で完全になくなりました。代わりに__eq__and friendsを使用する必要があります。

于 2013-01-21T06:48:42.463 に答える
0

はい、他の多くの演算子やメソッドでも同様です。Python docsに完全なリストがあります。

于 2013-01-21T06:49:45.010 に答える