答案here給出了您希望__ne__
返回除__eq__
的邏輯逆之外的其他情況的手寫參考,但我無法想象出任何此類情況。任何例子?爲什麼Python有一個__ne__運算符方法而不是__eq__?
36
A
回答
28
SQLAlchemy就是一個很好的例子。對於未初始化的,SQLAlchemy是一個ORM並使用Python表達式來生成SQL語句。在表達如
meta.Session.query(model.Theme).filter(model.Theme.id == model.Vote.post_id)
的model.Theme.id == model.VoteWarn.post_id
不返回一個布爾值,但最終能產生像WHERE theme.id = vote.post_id
一個SQL查詢的對象。反過來會產生類似於WHERE theme.id <> vote.post_id
的東西,所以這兩種方法都需要定義。
29
一些圖書館花哨的東西,並沒有從這些操作返回布爾。例如,對於numpy的:
>>> import numpy as np
>>> np.array([1,2,5,4,3,4,5,4,4])==4
array([False, False, False, True, False, True, False, True, True], dtype=bool)
>>> np.array([1,2,5,4,3,4,5,4,4])!=4
array([ True, True, True, False, True, False, True, False, False], dtype=bool)
當比較的陣列,以一個單一的值或另一個陣列你回到比較相應的元件的結果的布爾變量的陣列。如果x!=y
僅僅等於not (x==y)
,則無法執行此操作。
8
更一般地,在many valued logic系統中,equals
和not equals
不一定彼此精確相反。
明顯的例子是SQL,其中True == True
,False == False
和Null != Null
。雖然我不知道是否有任何特定的Python示例,但我可以想象它是在某些地方實現的。
+1
而在MYSQL中,你甚至可以同時擁有'NULL'和'NOT NULL'的值!!! 1! (儘管我認爲這是MySQL的一個設計錯誤) – 2012-02-26 20:31:13
相關問題
- 1. python total_ordering:爲什麼__lt__和__eq__而不是__le__?
- 2. 爲什麼右移運算符產生一個零而不是一個?
- 3. 'is'運算符爲什麼說這些方法不一樣?
- 4. 爲什麼typeof被稱爲運算符而不是函數?
- 5. 爲什麼賦值運算符返回一個值而不是引用?
- 6. 爲什麼Ruby使用=〜而不是〜=來匹配運算符?
- 7. 爲什麼++運算符將整數增加4而不是1?
- 8. 是否有重新定義行爲的方法。一個python類的運算符?
- 9. Python中爲什麼不是「和」和「或」運算符?
- 10. python中的%運算符是什麼?
- 11. 在Python中,「〜〜」運算符是什麼?
- 12. 爲什麼equals()方法當我們有==運算符?
- 13. 爲什麼我的語法適用於*, - ,/等運算符,而不是+?
- 14. 爲什麼python datetime類有'fromtimestamp'方法,但不是'totimestamp'方法?
- 15. 爲什麼FrameworkElement的FindResource()方法接受一個對象而不是字符串?
- 16. 爲什麼我們在通過super調用時不得不使用__dunder__方法而不是運算符?
- 17. 爲什麼Tensorflow不會覆蓋__eq__?
- 18. 運算符+ =重載,爲什麼是const?
- 19. 爲什麼在std :: cout中使用「::」運算符而不是「。」運營商?
- 20. 爲什麼TimeSpan.Duration()是一種方法而不是屬性?
- 21. 什麼是Java「= +」運算符?
- 22. 什麼是「===」運算符?
- 23. 什麼是()=>運算符?
- 24. C++ - 什麼是運算符。*?
- 25. 爲什麼Go有一個「清晰(AND NOT)」運算符?
- 26. SQL Server不等式比較運算符,爲什麼有兩個
- 27. 爲什麼PHP有兩個「不等於」運算符(=和<>!)
- 28. 這個運算符是什麼「=>」?
- 29. 爲什麼我們需要一個明確的轉換,而不是擴展方法而不是靜態方法?
- 30. 什麼是寫密碼破解算法的有效方法(python)
至少對''''和'<='有這樣的情況。即'NaN < anything => false'和'NaN> = anything => false'。 (假設python遵循IEEE浮點邏輯) – CodesInChaos 2012-02-26 11:04:09
是的,基本上任何沒有[total order](http://en.wikipedia.org/wiki/Total_ordering)的東西都可以歸入這個類別。由於顯而易見的原因,這些東西很少見,但它們確實存在。 NaN是一個很好的例子。 – Voo 2012-02-26 11:09:48
只因爲你能。 – 2012-02-26 11:24:25