Lov*_*ing 2 python class python-3.x
Python提供了重载==运算符AND !=运算符的功能.但为什么?是不是足够重载==并!=自动相反(实际值)==?
一个人的结果不应该自动暗示对方吗?
你不必有到,蟒蛇并没有强迫你.事实上,文档解释了什么和为什么:
默认情况下,除非是结果,否则
__ne__()委托__eq__()并反转结果NotImplemented.比较运算符之间没有其他隐含的关系,例如,(x<y或x==y)的真实性并不意味着x<=y.
一般来说,事实x==y并非需要暗示这x!=y是错误的.如果您的数据模型需要反映这种关系,那么python可以让您轻松解决这个问题.
请注意,对于早期版本的python,甚至没有暗示这种关系.例如,
class Foo:
def __init__(self, val):
self.val = val
def __eq__(self, other):
return self.val == other.val
f1, f2 = Foo(1), Foo(1)
Run Code Online (Sandbox Code Playgroud)
现在,f1 == f2返回True任何版本.然而, 在python-3.x 上f1 != f2返回False,但True在python-2.x上(因为__ne__并不暗示在python-2.x上,并且通常两个用户定义的对象如果它们的ID不相同则不相等,即不同一个对象).
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |