我想知道为什么" Word(' zhiying')== Word(' navaln')"是真的?

时间:2018-03-09 12:11:05

标签: python class

在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')的输出是真的?

1 个答案:

答案 0 :(得分:6)

因为您的__new__方法会为任何没有空格的单词返回None。可能你想取消return陈述。您甚至可以在控制台输出中看到此问题 - 当您尝试len(Word('zhiying'))时,您会收到有关NoneType的错误。