有没有办法在Python中覆盖和运算符?

时间:2009-01-23 01:36:42

标签: python

我尝试覆盖__and__,但这是为了&运算符,而不是 - 我想要的那个。我可以覆盖吗?

4 个答案:

答案 0 :(得分:35)

不,您无法覆盖andor。由于这些在Python中的行为(即短路),它们更像是控制流工具而不是操作符,并且覆盖它们更像是重写if而不是+或 - 。

可以通过覆盖{3}}(或Python 3中的__nonzero__)来影响对象的真值(即它们是评估为真还是假)。

答案 1 :(得分:26)

您无法覆盖andornot布尔运算符。

答案 2 :(得分:1)

不是真的。短路逻辑运算符没有特殊的方法名称。

答案 3 :(得分:0)

尽管您不能重载__and__,但可以使用infix重载和。在这种情况下,您将使用&and&表示and运算符。