請看下面的示例。創建混淆的Python類分配
>>> class X:
pass
>>> Y = X
>>> X
<class '__main__.X'>
>>> Y
<class '__main__.X'>
>>> Y == X
True
>>> Y is X
True
上面的代碼是可以理解的。但是,看看下面的一個。
>>> X = type('X',(), {})
>>> Y = type('X',(), {})
>>> X
<class '__main__.X'>
>>> Y
<class '__main__.X'>
>>> X == Y # Shouldn't this be True??
False
>>> X is Y
False
這裏X is Y == False
與預期的一樣。但是怎麼來X == Y
是False
? 他們都是同一班級的,不是嗎?
這個問題的簡短答案:類不能與'=='進行比較,因爲沒有人實現該功能;並且'a == b'(如果沒有被覆蓋)的標準行爲是返回'a is b'。 –
@Rawing評論更有意義。 :d – RatDon