python运算符重载是如何工作的

时间:2016-03-16 09:54:09

标签: python pandas operator-overloading

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

但是当我来到python pandams库时。我开始困惑了。

nbviewer.jupyter.org

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

不会返回True或False。

这对我来说很疯狂。有没有人可以帮我理解这个?

    在Python中
  1. ,我们可以重载operator ==以便它不会返回布尔值吗?
  2. 如果问题1是真的,我怎么能写一个简单的代码来演示这个?
  3. 从链接中复制了一些相关结果:

    >>> 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
    

1 个答案:

答案 0 :(得分:3)

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

class MyClass(object):

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

只要您将类型与self == other进行比较,就会调用此方法。在python中从这个函数返回一个布尔值被认为是很正常的,所以如果你希望你的代码对其他开发人员有意义,你可能想要考虑返回其他任何东西。

请参阅此here

上的python 2文档