我想使用这些运算符的魔术方法进行 bool 二进制运算。例如,我可以得到 a < b
作为 getattr(a, '__lt__')(b)
或 a == b
作为 getattr(a, '__eq__')(b)
.
我可以得到 a in b
和 a is b
以这种方式?
最佳答案
对于in
,正确的dunder方法是__contains__
.
is
没有方法,因为这等价于id(a) == id(b)
。它比较 Python 在后台使用的实际对象 ID,因此用于比较对象身份,而不是对象内容。在类中覆盖它会破坏 Python 的对象模型,因此是不允许的。
关于python - 运算符 "is"和 "in"的魔术方法的名称是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40980751/