Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonクラスで等価(「等式」)演算子をどのように使用しますか?


以下のコードのように等式演算子を使用すると、出力としてfalseが返されます

class Integer:
    def __init__(self, number):
        self.number = number

n1 = Integer(1)
n2 = Integer(1)
print bool(n1 == n2)

出力

False

これは、Pythonがデフォルトで比較操作にオブジェクト識別子を使用するためです:

この問題を解決するには、__ eq__function

をオーバーライドする必要があります
class Integer:
    def __init__(self, number):
        self.number = number
    def __eq__(self, other):

       if isinstance(self, other.__class__):

          return self.__dict__ == other.__dict__

       return False
n1 = Integer(1)
n2 = Integer(1)
print bool (n1 == n2)
print bool (n1 != n2)

出力

True
True

Python 2.xの場合、__ne__functionもオーバーライドする必要があります。これはPython3.xでは必要ありません。ドキュメントによると、以下が当てはまります。

デフォルトでは、__ ne __()は__eq __()に委任し、NotImplementedでない限り結果を反転します。比較演算子間に他の暗黙の関係はありません。たとえば、(x

  1. WindowsでPythonを使用する方法

    学習して使用するのに最適なプログラミング言語の1つとして、何百万人もの新しいコーダーがPythonの使用方法の学習に注意を向けているのも不思議ではありません。参入障壁が低く、すべての主要なオペレーティングシステムでPythonがサポートされているため、Webサイトからデスクトップゲーム(およびその他)までプロジェクトを構築できます。 Pythonは通常、macOSとLinuxにプリインストールされていますが、WindowsユーザーがプロジェクトでPythonの使用を開始する前に、ジャンプする必要のある追加のフープがいくつかあります。 WindowsでPythonを使用する方法を学びたい場合は

  2. Tkinter Pythonでスレッドを使用する方法は?

    Tkinterでは、スレッド化を使用して一度に複数の関数を呼び出すことができます 。アプリケーション内の一部の機能の非同期実行を提供します。 Pythonでスレッドを使用するために、スレッドというモジュールをインポートできます。 スレッドをサブクラス化します クラス。新しいクラス内で、実行を上書きする必要があります メソッドを実行し、そこでロジックを実行します。 したがって、基本的にスレッドを使用すると、一度に複数の作業を行うことができます。アプリケーションでスレッド化を実現するために、Tkinterは Thread()を提供します 機能。 例を挙げて、しばらくスリープしてから別の関数を