为什么我不能重新定义__and__运算符? 通用标签

我想要(a>0) && (b>0),但是我得到了b,那是and的通常行为

有帮助吗?

解决方案

__and__是二进制(按位)&运算符,而不是逻辑and运算符。

由于and运算符是短路运算符,因此无法将其实现为函数。也就是说,如果第一个参数为false,则根本不评估第二个参数。如果您尝试将其实现为函数,则必须先对两个参数进行求值,然后才能调用该函数。

其他提示

因为您无法在Python中重新定义关键字(那是and的意思)。__add__用于执行其他操作:

调用这些方法以实现二进制算术运算(... &...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top