當==(等號)運算符用於比較不同類型時,是否有方法獲取異常?嘗試排序不同類型的對象時,Python 3會引發異常。但==仍然返回False。Python等於運算符,避免類型錯誤:(<string> == <number>) - > False
還有其他一些方法可以避免難以發現錯誤類型假設導致的錯誤嗎?有什麼設計模式可以幫助嗎?
我在想,例如,某人使用某人的情況下,即使該屬性基本上是一個數字,它仍會始終返回一個字符串,而不會執行xmlparser.get()。
當==(等號)運算符用於比較不同類型時,是否有方法獲取異常?嘗試排序不同類型的對象時,Python 3會引發異常。但==仍然返回False。Python等於運算符,避免類型錯誤:(<string> == <number>) - > False
還有其他一些方法可以避免難以發現錯誤類型假設導致的錯誤嗎?有什麼設計模式可以幫助嗎?
我在想,例如,某人使用某人的情況下,即使該屬性基本上是一個數字,它仍會始終返回一個字符串,而不會執行xmlparser.get()。
不,因爲==,推理是平等意味着可比性。如果兩個對象甚至沒有可比性,則它們不相等,因此它將返回false並永不拋出異常。
不,python是固有的動態類型。
如果必須雙檢一個類型,使用isinstance()
function,或使用duck typing測試特定行爲。
我想,例如,某人使用某人的情況下,即使該屬性基本上是一個數字,總是會返回一個字符串,但實現xmlparser.get()。
你可能想通過調用int
或float
上酌情要挾值的數字。
儘管Python有動態類型,但它是強(不鴨)。所以:
>>> 42 == 42
True
>>> 42 == 42.0
True
>>> 42 == "42"
False
>>> 42 == int("42")
True
在獲取數字的字符串表示形式時,您必須執行顯式的類型轉換。
另一方面,您可以通過在班級中定義方法__eq__(self, other)
或__cmp__(self, other)
來管理自定義對象的比較。