我读了 Luciano Ramalho 的《Fluent Python》一书。在 class 的描述中set,他写道:s & z # s.__and__(z) - intersection of s and zz & s # s.__rand__(z) - inversion operator &我无法理解。为什么在第二种情况下他不写:z.__and__(s)。作者说:“s和z的交集”!=“取反运算符&”。是否等于?__and_____rand__set()
1 回答
jeck猫
TA贡献1909条经验 获得超7个赞
我无法理解。为什么在第二种情况下他不写:
z.__rand__(s)
。
因为这正是反向运算符的重点。__radd__
它们也以等的形式存在__rsub__
。
如果在执行a & b
时调用a.__and__(b)
不存在或返回NotImplemented
,它会尝试(作为“最后的手段”)调用b.__rand__(a)
。
有关详细信息,请参阅Python 文档的相关部分。
在您的示例中,可能 class of z
doesn't implement __and__
,因此它回退到s
which supply __rand__
。
添加回答
举报
0/150
提交
取消