|
发表于 2020-8-4 07:56:46
|
显示全部楼层
本帖最后由 Twilight6 于 2020-8-4 08:00 编辑
你 __init__ 中将 self.length 转为 str 了,而你重写的比较方法里只有 self.length 而 other 你没带上 length 导致你是比较
字符串 self.length 和 另一个实例对象的字符串,虽然你访问 length 返回的值是比他下小,但是你比较的并不是 length 的大小
而是 字符串 self.length 和 other 字符串的 ASCII 值,你 a > b ,实际上所指的对象是 a.length > b
而你的 a.length = '3' 、b = 'sc bcd' , 通过查表或者 Python 内置函数我们得知 '3' 字符串对应的 ASCII 码值是 51 而 's' 字符串的ASCII 码值是 115
所以 a > b 等价于比较 a.length > b 等价于 '3' > 'sc bcd' 而 's' ASCII 大于 '3' 所以返回了是 False
如果你想比较他们长度,应该将 __init__ 中的 str(self.length) 的 str 去掉
还有下面重写的比较方法 other 改成 other.length
|
|