2016-05-29 5 views
3

私は現在、(ab)python表記を使用してドメイン固有の言語を作成しています。これの一部として、非ブール値を返す比較関数をオーバーライドします。Pythonでカスタム比較(0 <mytype)を定義するにはどうすればよいですか?

(mytype1 < mytype2)と(mytype < 0)については、__lt __()マジックメソッドを定義することで簡単に行うことができます。

しかし、マジックメソッドを組み込みのint型で定義する必要があるため、(0 < mytype)の方法を理解できません。数値演算に存在する__rlt __()関数は存在しないようです。

lhsの型がint型(python3)の場合、この比較のサポートを追加するにはどうすればよいですか?

答えて

4

__lt__()の反映形態は、__gt__()である。

(左の引数が操作をサポートしないが、右側の引数がそうである場合に使用される)これらのメソッドの引数のないバージョンはありません。むしろ__lt__()__gt__()はお互いの反射であり、__le__()__ge__()はお互いの反射であり、__eq__()__ne__()はそれぞれの反射です。オペランドのタイプが異なり、右オペランドのタイプが左オペランドのタイプの直接または間接サブクラスである場合、右オペランドの反映されたメソッドが優先されます。そうでない場合、左オペランドのメソッドが優先されます。仮想サブクラス化は考慮されません。

+0

ありがとうございます - 私は投稿する前にそのセクションを読むとそこになかったことを誓います! – user3852791

関連する問題