Python __lt__ __gt__カスタム(オーバーロード)演算子を実装する方法は?
Pythonには、演算子のオーバーロードされた動作を定義するための魔法のメソッドがあります。比較演算子(<、<=、>、> =、==、および!=)は、__ lt __、__ le __、__ gt __、__ ge __、__ eq__、および__ne__マジックメソッドに定義を提供することでオーバーロードできます。次のプログラムは、距離クラスのオブジェクトを比較するために<および>演算子をオーバーロードします。
class distance: def __init__(self, x=5,y=5): self.ft=x self.inch=y def __eq__(self, other): if self.ft==other.ft and self.inch==other.inch: return "both objects are equal" else: return "both objects are not equal" def __lt__(self, other): in1=self.ft*12+self.inch in2=other.ft*12+other.inch if in1<in2: return "first object smaller than other" else: return "first object not smaller than other" def __gt__(self, other): in1=self.ft*12+self.inch in2=other.ft*12+other.inch if in1<in2: return "first object greater than other" else: return "first object not greater than other" d1=distance(5,5) d2=distance() print (d1>d2) d3=distance() d4=distance(6,10) print (d1<d2) d5=distance(3,11) d6=distance() print(d5<d6)
first object not greater than other first object not smaller than other first object smaller than other
-
最新のPythonでカスタム例外を宣言する方法は?
何かをオーバーライドしたり、例外に追加の引数を渡したりするには、最新のPythonで次のようにします。 class ValidationError(Exception): def __init__(self, message, errors): super(ValidationError, self).__init__(message) self.errors = errors そうすれば、エラーメッセージの辞書を2番目のパラメータに渡し、後で必要に応じてそのパラメータにアクセスできます。
-
Pythonでユーザー定義の例外を実装するにはどうすればよいですか?
Pythonで新しい例外クラスを作成することにより、ユーザー定義またはカスタムの例外を作成します。アイデアは、例外クラスからカスタム例外クラスを派生させることです。ほとんどの組み込み例外は、同じ考え方を使用して例外を強制します。 指定されたコードで、ユーザー定義の例外クラス「CustomException」を作成しました。親としてExceptionクラスを使用しています。したがって、新しいユーザー定義の例外クラスは、他の例外クラスと同じように例外を発生させます。つまり、オプションのエラーメッセージを指定して「raise」ステートメントを呼び出します。 例を見てみましょう。 この例では、ユ