詳細最初の8.22 Pythonのケース:書き換え「比較的豊かな」アプローチ制御コンパレータロジック

クリエイティブコモンズライセンス 著作権:帰属、紙ベースを作成するために他人を許可し、(同じライセンスで元のライセンス契約に基づいて用紙配布する必要がありますクリエイティブコモンズ

まず、ケースが示して
、このセクションでは、車のクラス名carname、百キロのoilcostper100km、価格の価格の3つのプロパティを含む車の車のクラスを定義します。そして、実装__lt__、__gt__、__le__、__ge__の4つの方法は、(「__、__ gt__などのPython __ltに8.21の」を参照してください、4つの方法を使用する「研究)メソッドは、」リッチ比較「(」リッチ比較(使用しています//ブログ:HTTPSを。 csdn.net/LaoYuanPython/article/details/95042104)、問題を説明するために、我々は比較ロジックと比較論理__gt__を__lt__うと__le__の__ge__は故意に反対し、書き換えをもたらしました方法の詳細は、出力をフォーマット__repr__。我々は、インスタンスのサイズを比較するために2つの変数を定義し、効果を確認するために行わ。
IIケースコード

>>> class Car():
   def __init__(self,carname,oilcostper100km, price):
       self.carname,self.oilcostper100km,self.price = carname,oilcostper100km, price
   def __lt__(self,other):
       print("execute __lt__")
       return self.price<other.price
   def __le__(self,other):
       print("execute __le__")
       return self.price>other.price
   def __gt__(self,other):
       print("execute __gt__")
       return self.oilcostper100km>other.oilcostper100km

   def __ge__(self,other):
       print("execute __ge__")
       return self.oilcostper100km<other.oilcostper100km

   def __repr__(self):  #重写__repr__方法输出repr信息
       return  f"('{self.carname}',{self.oilcostper100km},{self.price})"

>>> car1,car2 = Car('爱丽舍',8,10),Car('凯美瑞',7,27)
>>> car1<car2,car1<=car2,car1>car2,car1>=car2
execute __lt__
execute __le__
execute __gt__
execute __ge__
(True, False, True, False)
>>>

第三に、ケースにはスクリーンショットここに画像を挿入説明
4ケーススタディを

  1. 4それぞれによって呼び出され、<、<=、>、> =、比較出力を知ることができる__lt__、__le__、__gt__、__ge__4つの方法。
  2. 以来、__lt__、__le__同様に__gt価格比較を使用すると、2つの論理式の真の比較全く逆の逆であるので、2つの出力は、__、__ ge__はのサイズと比較した場合、カスタムクラスのPythonのオブジェクトインスタンスことを示し、同じです、オブジェクトのサイズは、実現にそれらの間には論理的な関係は、同じと__ gt__ __ge__も事実はありません、それは「少ない」、それは「未満」が含まれている必要があります必要としない、開発者自身によって定義されたルールを決めます李__gt__ __lt__と反対の結果である必要はない、最終的に論理的上書きが必要なサービスに応じて確認する必要があります。
  3. 上記の例を通して、我々はまた、豊富な比較メソッドをオーバーライドすることで、我々はコール・オブジェクトの比較ロジックを傍受することができます知っています。
  4. オブジェクトクラスを達成するためにも__eq__と__ne__、これらの2つの方法、実際の豊富な比較方法は、直接継承を使用することができますが、また、書き換えることができます。

:このセクションの参考文献
1、"("リッチ比較")メソッドは、照会を使用して"リッチ比較"のセクション8.21 Pythonの__lt __、__ gt__他の" ;
2、「セクション8.15、Pythonのカスタムクラス書き換え可能__repr__メソッド"

オールド猿Pythonは、古い猿でのPythonを学ぶ
ブログのアドレスをします。https://blog.csdn.net/LaoYuanPython

サポートしてください、親指をアップし、コメントや処理懸念!ありがとうございます!

おすすめ

転載: blog.csdn.net/LaoYuanPython/article/details/95081700