python 运算符重载如何工作

how does python operator overloading works

我能理解某些语言允许用户进行一些运算符重载。我首先在 C++ 领域知道这一点。但是c++对运算符重载也有一些限制,我认为这是合理的。

但是当我来到 python 熊猫图书馆时。我开始糊涂了。

nbviewer.jupyter.org

查看我的代码
complaints['Complaint Type'] == "Noise - Street/Sidewalk"

return 不是真或假。

这对我来说太疯狂了。谁能帮我理解这个?

  1. 在 Python 中,我们可以重载运算符 == 以便它不是 return 布尔值吗?
  2. 如果问题 1 成立,我如何编写一个简单的代码来演示它?

从link复制的一些相关结果:

>>> complaints['Complaint Type'] == "Noise - Street/Sidewalk"

0      True
1     False
2     False
3     False
4     False
...

111063    False
111064    False
111065    False
111066     True
111067    False
111068    False
Name: Complaint Type, Length: 111069, dtype: bool

如果您创建自己的 类 并向它们添加 __eq__ 方法,则可以重载运算符。

class MyClass(object):

    def __eq__(self, other):
        # compare self with other, return whatever you need

只要您将您的类型与 self == other 进行比较,就会调用此方法。 return 来自 python 中此函数的布尔值被认为是非常正常的,因此如果您希望您的代码对其他人有意义,您可能需要考虑 return 其他任何东西开发人员。

请参阅 python 2 的文档 here