2012-10-10 42 views
2

當==(等號)運算符用於比較不同類型時,是否有方法獲取異常?嘗試排序不同類型的對象時,Python 3會引發異常。但==仍然返回False。Python等於運算符,避免類型錯誤:(<string> == <number>) - > False

還有其他一些方法可以避免難以發現錯誤類型假設導致的錯誤嗎?有什麼設計模式可以幫助嗎?

我在想,例如,某人使用某人的情況下,即使該屬性基本上是一個數字,它仍會始終返回一個字符串,而不會執行xmlparser.get()。

回答

2

不,因爲==,推理是平等意味着可比性。如果兩個對象甚至沒有可比性,則它們不相等,因此它將返回false並永不拋出異常。

2

我想,例如,某人使用某人的情況下,即使該屬性基本上是一個數字,總是會返回一個字符串,但實現xmlparser.get()。

你可能想通過調用intfloat上酌情要挾值的數字。

2

儘管Python有動態類型,但它是(不鴨)。所以:

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

在獲取數字的字符串表示形式時,您必須執行顯式的類型轉換。

另一方面,您可以通過在班級中定義方法__eq__(self, other)__cmp__(self, other)來管理自定義對象的比較。

相關問題