2016-06-09 44 views
0

下面的代碼:爲什麼在Python(2.7.11)中將相同的部分比較爲不相等?

from functools import partial 
def f(a): 
    print a 
g = partial(f, 1) 
h = partial(f, 1) 
assert(g == h) 

引發斷言錯誤。爲什麼?

部分返回帶有屬性.func,.args和.keywords的可調用對象。在這個例子中:

g.func == h.func == f 
g.args == h.args == (1,) 
g.keywords == h.keywords == {} 

不應該g == h?

回答

1

我更注重實現,部分對象似乎只是一個具有上述屬性的內部函數。除非它們是相同的對象,否則函數永遠不會相等。可惜,我有一個用例,但有幾個解決方法。

+2

最明智的可能是創建一個基於類的替換,它定義了'__eq __()'。 –

相關問題