我尝试执行以下代码:(在 python 中)
from difflib import SequenceMatcher as sm
class myint(int):
def __cmp__(self , other):
return 0
def __eq__(self , other):
return True
a = myint(1)
b = myint(2)
c = myint(3)
d = myint(1)
e = myint(2)
f = myint(3)
x = [a,b,c]
y = [f,e,d]
q = sm(None,x,y)
如您所见,在这些代码中,我尝试使用自定义比较函数,这样 myint 的每两个实例都是相等的。但是,当我使用 SequenceMatcher 比较具有相同长度的两个 myint 列表时,我得到了一个意外的结果:
>>> q.ratio()
1: 0.3333333333333333
而不是 1.0。我看到 SequenceMatcher 使用了数字之间的常规比较而不是我的比较,尽管列表由“myint”类型的对象组成。
我如何编写 myint 类,以便 SequenceMatcher 将返回 1.0,如 exepted 一样?
(或使用具有自定义比较功能的 SequenceMatcher 的任何其他想法)