我尝试覆盖__and__
,但这是为了&运算符,而不是和 - 我想要的那个。我可以覆盖和吗?
答案 0 :(得分:35)
不,您无法覆盖and
和or
。由于这些在Python中的行为(即短路),它们更像是控制流工具而不是操作符,并且覆盖它们更像是重写if
而不是+或 - 。
你可以通过覆盖{3}}(或Python 3中的__nonzero__
)来影响对象的真值(即它们是评估为真还是假)。
答案 1 :(得分:26)
您无法覆盖and
,or
和not
布尔运算符。
答案 2 :(得分:1)
不是真的。短路逻辑运算符没有特殊的方法名称。
答案 3 :(得分:0)
尽管您不能重载__and__
,但可以使用infix重载和。在这种情况下,您将使用&and&表示and运算符。