为了账号安全,请及时绑定邮箱和手机立即绑定

类集中的“__and__”和“__rand__”有什么区别?

类集中的“__and__”和“__rand__”有什么区别?

BIG阳 2022-06-02 15:39:19
我读了 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 zdoesn't implement __and__,因此它回退到swhich supply __rand__


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信