gpt4 book ai didi

python - Python 中的运算符绑定(bind)

转载 作者:行者123 更新时间:2023-11-28 21:20:35 25 4
gpt4 key购买 nike

我有一个像这样的容器对象:

class foo(object):
def __init__(self,value):
self.value = value
def __eq__(self,other):
return self.value == other

我可以这样使用:

>>> var = foo(4)
>>> var == 4
True
>>> var == 3
False
>>> # So far so good
>>> var == foo(4)
True
>>> var == foo(3)
False
>>> # Huh

我的问题是:到底发生了什么让这神奇地“正常工作”? Python如何在__eq__内部绑定(bind)==运算符,从而比较双方的value成员?

最佳答案

如果 __eq__ 方法为给定参数返回 NotImplemented,Python 将反向尝试相同的测试。所以 x == y 将首先尝试 x.__eq__(y),如果返回 NotImplemented 单例,y.__eq__( x) 已尝试。

这也适用于内部您的__eq__ 方法中的比较;你本质上是在比较:

self.value == other

即:

4 == other

即:

4.__eq__(other)

返回NotImplemented:

>>> var = foo(4)
>>> (4).__eq__(var)
NotImplemented

因此 Python 尝试使用 other.__eq__(4),它返回 True

关于python - Python 中的运算符绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22664304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com