TypeError:“ int”对象无法按距离调用

时间:2019-06-23 22:05:55

标签: python python-3.x

我查看了其他答案,但他们没有回答汉明距离的问题。

我给它提供了无限远的距离。

import sys
def DistanceBetweenPatternAndStrings(pattern, dna):
    k = pattern
        distance = 0
        for i in range(len(dna) - len(pattern)+1):
            HammingDistance = sys.maxsize
            for j in range(len(dna) - len(pattern)+1): 
                pattern2 = dna[j:j+len(pattern)]
                if HammingDistance > HammingDistance(pattern, pattern2):
                    HammingDistance = HammingDistance(pattern, pattern2)
            distance = distance + HammingDistance
            return distance

def HammingDistance(pattern, pattern2):
    diff = 0
    for ch1, ch2 in zip(pattern, pattern2):
        if ch1 != ch2:
            diff +=1
    return diff

我应该得到没有错误的距离,但是我得到了:

  

TypeError:“ int”对象不可调用

if HammingDistance > HammingDistance(pattern, pattern2)

1 个答案:

答案 0 :(得分:1)

该错误与距离计算无关。问题是您有一个具有相同名称的变量和方法。您应该从不这样做。

您已将HammingDistance定义为方法:

def HammingDistance(pattern, pattern2):
    ...

您还将HammingDistance定义为int

HammingDistance = sys.maxsize

执行此操作时:

HammingDistance(pattern, pattern2)

解释器将调用最接近的定义,即定义为HammingDistance的{​​{1}},您的int方法。这就是为什么出现“ 'int'对象不可调用”错误的原因。

只需将本地变量重命名为其他名称,即可将其与方法区分开来。

HammingDistance