Python 相同类型有不同的值吗?
在Python中,如果我有以下代码:
r = Numeric(str)
i = int(r)
if r == i :
return i
return r
这是否相当于:
r = Numeric(str)
return r
或者不同类型r和i的==值是否给出不同的返回值r和i?
In Python, if I have the following code:
r = Numeric(str)
i = int(r)
if r == i :
return i
return r
Is this equivalent to:
r = Numeric(str)
return r
Or do the == values of different types r and i give different return values r and i?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这完全取决于类是否实现了足够的 __eq__ 方法来覆盖 == 运算符。
编辑:添加了一个小例子:
It all depends if the class implements an adequate
__eq__
method to override==
operator.Edit: Added a little example:
让我们看看:
使用
==
可以将不同类型视为相等。Lets see:
Different types can be considered equal using
==
.问题:“不同类型 r 和 i 的 == 值是否会给出不同的返回值 r 和 i?”
答:显然它们是不同的;他们有不同的类型。
在上面的示例中,我声明了一个名为 Numeric 的类来进行测试。如果您实际上有一个实现称为 Numeric 的类的模块,它不会显示
__main__.Numeric
而是其他内容。如果该类实现了 __eq__() 方法函数,则
==
的结果将取决于该函数的作用。有了上面的内容,我们现在可以这样做:
Question: "do the == values of different types r and i give different return values r and i?"
Answer: clearly they are different; they have different types.
In the above example, I declared a class called
Numeric
to have something to test. If you actually have a module that implements a class called Numeric, it won't say__main__.Numeric
but something else.If the class implements a
__eq__()
method function, then the results of==
will depend on what that function does.With the above, we can now do: