Python 相同类型有不同的值吗?

发布于 2024-12-04 17:04:35 字数 217 浏览 4 评论 0原文

在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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

递刀给你 2024-12-11 17:04:35

这完全取决于类是否实现了足够的 __eq__ 方法来覆盖 == 运算符。

编辑:添加了一个小例子:

>>> class foo:
...     def __init__(self,x):
...         self.x = x
...     def __eq__(self,y):
...         return int(self.x)==int(y)
... 
>>> f = foo(5)
>>> f == '5'
True
>>> 5 == '5'
False

It all depends if the class implements an adequate __eq__ method to override == operator.

Edit: Added a little example:

>>> class foo:
...     def __init__(self,x):
...         self.x = x
...     def __eq__(self,y):
...         return int(self.x)==int(y)
... 
>>> f = foo(5)
>>> f == '5'
True
>>> 5 == '5'
False
预谋 2024-12-11 17:04:35

让我们看看:

>>> float(2) == int(2)
True

使用 == 可以将不同类型视为相等。

Lets see:

>>> float(2) == int(2)
True

Different types can be considered equal using ==.

鹿童谣 2024-12-11 17:04:35

问题:“不同类型 r 和 i 的 == 值是否会给出不同的返回值 r 和 i?”

答:显然它们是不同的;他们有不同的类型。

>>> print(type(i))
<type 'int'>
>>> print(type(n))
<class '__main__.Numeric'>

在上面的示例中,我声明了一个名为 Numeric 的类来进行测试。如果您实际上有一个实现称为 Numeric 的类的模块,它不会显示 __main__.Numeric 而是其他内容。

如果该类实现了 __eq__() 方法函数,则 == 的结果将取决于该函数的作用。

class AlwaysEqual(object):
    def __init__(self, x):
        self.x = x
    def __eq__(self, other):
        return True

有了上面的内容,我们现在可以这样做:

>>> x = AlwaysEqual(42)
>>> print(x == 6*9)
True
>>> print(x == "The answer to life, the universe, and everything")
True

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.

>>> print(type(i))
<type 'int'>
>>> print(type(n))
<class '__main__.Numeric'>

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.

class AlwaysEqual(object):
    def __init__(self, x):
        self.x = x
    def __eq__(self, other):
        return True

With the above, we can now do:

>>> x = AlwaysEqual(42)
>>> print(x == 6*9)
True
>>> print(x == "The answer to life, the universe, and everything")
True
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文