Python 3如何將內置對象(在lhs上)與用戶定義的對象(在rhs上)進行比較?內置和用戶定義類型之間的Python比較
內置__eq__
方法是否簡單地將比較委託給rhs(rhs.__eq__(self)
)?
我在文檔中沒有發現任何關於此的聲明。 docs狀態:
不同類型的對象,除了不同的數字類型,永遠不會比較相等。
這是很誤導,因爲:
class X:
def __eq__(self, rhs)
return True
x = X()
'abc' == x # True
我認爲DOC聲明應作如下改寫:不同的內置類型,但不同的數字類型的
對象,根本不比較等於。
和應進一步闡明如何進行比較用戶定義的類的實例。
我把你的有關措辭點,但說句公道話,該部分被稱爲該documentation on the
__eq__
protocol「內建類型「,第一句是」以下部分描述瞭解釋器中內置的標準類型「。其他句子,比如「任何對象都可以測試真值」,也假設你沒有定義「def __bool __(self):raise Exception」或其他東西。 – DSM@DSM是的,我在二讀時意識到了這一點。事情是,很多人只是從文檔中摘錄短片;這段文字的正確解釋所需的上下文數量遠遠超出了我的正常關注範圍! – max