实际上我多次得到这个错误,我不知道它来自哪里。 我的功能是算总的比较中BST, 她是我的代码'str'对象没有属性'比较'
def total(bst):
s = Stack()
total = 0
s.push(bst._root)
while not s.is_empty():
x = s.pop()
nu = x._value
total = total + nu.comparisons
if x._right:
s.push(x._right)
if node._left:
s.push(x._left)
return total
这里是错误
total = total + i.comparisons
AttributeError: 'str' object has no attribute 'comparisons'
这里是信的CLAAS:
class Letter:
def __init__(self, letter):
assert letter.isalpha() and letter.isupper(), "Invalid letter"
self.letter = letter
self.count = 0
self.comparisons = 0
return
def __str__(self):
return "{}: {}, {}".format(self.letter, self.count, self.comparisons)
def __eq__(self, rs):
self.count += 1
self.comparisons += 1
result = self.letter == rs.letter
return result
def __lt__(self, rs):
self.comparisons += 1
result = self.letter < rs.letter
return result
def __le__(self, rs):
self.comparisons += 1
result = self.letter <= rs.letter
return result
任何人都可以向我解释,谢谢你的任何回音。
您将self.comparisons定义为类Letter的值。 'num'是一个字符串值,所以为了使用它,你必须定义一个字母对象来使用比较。 – JustDucky