2016-06-09 43 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 __()'。 –

相关问题