在否定中调用隐藏方法

时间:2016-02-16 16:19:27

标签: python

当我写-b时,python调用了什么方法?我怀疑它是__sub__,但我不明白当我们只有变量(b)时会发生什么。是0.__sub__(b)执行了吗?

2 个答案:

答案 0 :(得分:4)

您正在寻找否定__neg__运营商:

operator.neg(obj) 
operator.__neg__(obj)

Return obj negated (-obj).

答案 1 :(得分:2)

当对象使用一元否定运算符时,python会调用它的__neg__方法。

这是一个简单的示例,展示了如何使用它并进行自定义

>>> class B(int):
...     def __neg__(self):
...         return self*2
... 
>>> b = B(3)
>>> b
3
>>> -b
6