実際にこのエラーが何度起こるかは、どこから来たのか分かりません。 私の機能は、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
誰でも私にそれを説明することができます、任意のヒープのおかげで。
あなたはLetterクラスの値としてself.comparisonsを定義しています。 'num'は文字列の値なので、それを使うためには比較を使う文字オブジェクトを定義しなければなりません。 – JustDucky