第一个使用对象的__ne__
方法,而第二个使用对象的__eq__
方法并否定其结果。
虽然这两种方法都应该将它们的结果配对,所以这a == b
意味着not a != b
这实际上不是必需的或强制的。
比较运算符之间没有隐含的关系。的真理x==y
并不意味着它x!=y
是错误的。因此,在定义 时__eq__()
,还应该定义__ne__()
操作符的行为与预期一致。
在您的情况下,choice
字符串在哪里(我猜?)它并没有真正的区别。内置类型都确保==
和之间的反比关系!=
。所以唯一的区别是在查看代码时它的可理解性。我个人更喜欢更简洁的第一个版本。