Python ';str';对象没有属性';比较';
事实上,我很多次都会犯这个错误,我不知道它是从哪里来的。! 我的功能是计算bst中的总比较, 她是我的密码Python ';str';对象没有属性';比较';,python,binary-search-tree,Python,Binary Search Tree,事实上,我很多次都会犯这个错误,我不知道它是从哪里来的。! 我的功能是计算bst中的总比较, 她是我的密码 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.compar
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'
以下是信件的分类:
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
类字母:
定义初始(自我,字母):
断言字母.isalpha()和字母.isupper(),“无效字母”
self.letter=字母
self.count=0
self.compariations=0
返回
定义(自我):
返回“{}:{},{}”。格式(self.letter、self.count、self.comparations)
定义(自我,rs):
self.count+=1
自我比较+=1
结果=self.letter==rs.letter
返回结果
定义(自我,rs):
自我比较+=1
结果=自我字母i
(或num
)是一个str
,它没有比较
属性。但是,您的字母
对象确实如此。可以将它转换成一个字母
,然后尝试使用比较
,就像这样:字母(i)。比较
编辑:
为什么比较总是空的原因是因为您从不将该变量与其他变量进行比较(这是比较递增的地方,请参见字母中的\uuuuuuueq\uuuuuuu
)。只有当你说出类似于i=Letter(i)
的话,然后将i
与类似于i==1
的话进行比较,它们才会开始改变。只有这样,比较才会增加。看起来i
(或num
)是一个str
,它没有比较
属性。但是,您的字母
对象确实如此。可以将它转换成一个字母
,然后尝试使用比较
,就像这样:字母(i)。比较
编辑:
为什么比较总是空的原因是因为您从不将该变量与其他变量进行比较(这是比较递增的地方,请参见字母中的\uuuuuuueq\uuuuuuu
)。只有当你说出类似于i=Letter(i)
的话,然后将i
与类似于i==1
的话进行比较,它们才会开始改变。只有这样,您的比较才会增加。您将self.comparison定义为类字母的值num
是一个字符串值,因此为了使用它,您必须定义一个字母对象来使用比较。您将self.comparison定义为类字母的值num
是一个字符串值,因此为了使用它,您必须定义一个字母对象来进行比较。