python 运算符重载如何工作
how does python operator overloading works
我能理解某些语言允许用户进行一些运算符重载。我首先在 C++ 领域知道这一点。但是c++对运算符重载也有一些限制,我认为这是合理的。
但是当我来到 python 熊猫图书馆时。我开始糊涂了。
查看我的代码
complaints['Complaint Type'] == "Noise - Street/Sidewalk"
return 不是真或假。
这对我来说太疯狂了。谁能帮我理解这个?
- 在 Python 中,我们可以重载运算符 == 以便它不是 return 布尔值吗?
- 如果问题 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
我能理解某些语言允许用户进行一些运算符重载。我首先在 C++ 领域知道这一点。但是c++对运算符重载也有一些限制,我认为这是合理的。
但是当我来到 python 熊猫图书馆时。我开始糊涂了。
查看我的代码complaints['Complaint Type'] == "Noise - Street/Sidewalk"
return 不是真或假。
这对我来说太疯狂了。谁能帮我理解这个?
- 在 Python 中,我们可以重载运算符 == 以便它不是 return 布尔值吗?
- 如果问题 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