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

air*_*tyh 29 python

我试图重写__and__,但这是&操作,不 -这是我想要的.我可以覆盖

dF.*_*dF. 37

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

可以通过重写__nonzero__(或__bool__在Python 3中)影响对象的真值(即它们是评估为真还是假).

  • 控制流(右侧的懒惰评估)语义仍然可以通过使重载是二元运算符来维护,其中右侧作为可调用而不是作为值传递。 (2认同)

Ign*_*ams 27

你不能覆盖的and,ornot布尔运算符.

  • 值得注意的是,[PEP335](https://www.python.org/dev/peps/pep-0335/)提出了一项提案,并最终被驳回. (8认同)