1

実験的に、適切なセンチネル値のセットを探しています。

[] > "sdfasfg" > ()

そして、これは文書化されているようです:

CPython 実装の詳細: 数値以外の異なる型のオブジェクトは、型名で並べ替えられます。適切な比較をサポートしない同じタイプのオブジェクトは、アドレス順に並べられます。参照

同じように、

object() < str()

「最大の」組み込み型は のようですがunicode、ユニコード型と比較するための「正しい」センチネル値として何を使用できますか? それはどのユニコード文字列よりも大きい値ですか?

組み込み型のインスタンスの比較順序は、Python で本当に適切に定義されていますか?

4

1 に答える 1

2

任意のオブジェクトの比較は、「豊富な比較」と呼ばれます。ここここにいくつかのドキュメントがあります。

Python 3 を使用している場合は、こちらを確認しください。このソースからの関連する引用:

豊富な比較メソッドとメソッドの両方を持つ__cmp__()ことは、それを行う明白な方法は 1 つしかないという原則に反するため、Python 3 では のサポート__cmp__()が削除されました。したがって、Python 3 の場合、オブジェクトを比較できるようにする場合は、豊富な比較演算子をすべて実装する必要があります。

于 2013-07-01T15:48:56.020 に答える