English 中文(简体)
有没有办法在Python中覆盖and运算符?
原标题:
  • 时间:2009-01-23 01:36:42
  •  标签:

我尝试覆盖 __and__,但那是针对 & 运算符,而不是我想要的 and。我能覆盖 and 吗?

最佳回答

你不能覆盖andornot布尔运算符。

问题回答

不,你不能覆盖 andor。由于它们在Python中的行为(即短路行为),它们更像控制流工具而不是运算符,覆盖它们更像覆盖 if 而不是 + 或 -。

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

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

尽管您无法过载__and__,但可以使用中缀来过载and。在这种情况下,您将使用&and&表示and运算符。





相关问题
热门标签