重新定义__and__运算符
-
28-09-2019 - |
题
为什么我不能重新定义__and__
运算符?
通用标签
我想要(a>0) && (b>0)
,但是我得到了b,那是and
的通常行为
解决方案
__and__
是二进制(按位)&
运算符,而不是逻辑and
运算符。
由于and
运算符是短路运算符,因此无法将其实现为函数。也就是说,如果第一个参数为false,则根本不评估第二个参数。如果您尝试将其实现为函数,则必须先对两个参数进行求值,然后才能调用该函数。
其他提示
因为您无法在Python中重新定义关键字(那是and
的意思)。__add__
用于执行其他操作:
不隶属于 StackOverflow