在python控制台中,我定义了一个名为Word的类。
class Word(str):
def __new__(cls, word):
if ' ' in word:
print("Value contains spaces.Truncating to first space.")
word = word[:word.index(' ')]
return str.__new__(cls,word)
def __gt__(self, other):
return len(self) > len(other)
def __lt__(self, other):
return len(self) < len(other)
def __ge__(self, other):
return len(self) >= len(other)
def __le__(self, other):
return len(self) <= len(other)
我想知道为什么Word('zhiying') == Word('navaln')
的输出是真的?
答案 0 :(得分:6)
因为您的__new__
方法会为任何没有空格的单词返回None
。可能你想取消return
陈述。您甚至可以在控制台输出中看到此问题 - 当您尝试len(Word('zhiying'))
时,您会收到有关NoneType
的错误。