2

== (等しい) 演算子を使用して異なる型を比較す​​るときに例外を取得する方法はありますか? Python 3 は、異なる型のオブジェクトを並べ替えようとすると例外をスローします。しかし、== は依然として False を返します。

または、間違った型の仮定によって引き起こされる検出が困難なバグを回避する他の方法はありますか? 役立つデザインパターンはありますか?

たとえば、プロパティが基本的に数値であっても、誰かが常に文字列を返す xmlparser.get() の他の誰かの実装を使用する場合を考えています。

4

4 に答える 4

2

たとえば、プロパティが基本的に数値であっても、誰かが常に文字列を返す xmlparser.get() の他の誰かの実装を使用する場合を考えています。

int必要に応じて、またはその値を呼び出して、値を数値に強制したい場合がありfloatます。

于 2012-10-10T09:18:32.753 に答える
2

Python には動的型付けがあるにもかかわらず、強力です(ダックではありません)。そう:

>>> 42 == 42
True
>>> 42 == 42.0
True
>>> 42 == "42"
False
>>> 42 == int("42")
True

数値の文字列表現を取得するときは、明示的な型変換を実行する必要があります。

一方、メソッドを定義する__eq__(self, other)__cmp__(self, other)、クラスでカスタム オブジェクトの比較を管理できます。

于 2012-10-10T09:20:13.067 に答える