nik*_*nik 17 python magic-methods getattr
我想使用这些运算符的魔术方法进行bool二进制运算.例如,我可以得到a < b作为getattr(a, '__lt__')(b)或a == b作为getattr(a, '__eq__')(b).
我能得到a in b并且a is b以这样的方式?
Set*_*ton 25
因为in,正确的dunder方法是__contains__.
没有方法is,因为这相当于id(a) == id(b).它比较了Python下使用的实际对象ID,因此用于比较对象标识,而不是对象内容.在类中覆盖它会破坏Python的对象模型,因此不允许这样做.
Dan*_* D. 15
in是__contains__和is没有dunder方法.我强烈建议你使用operator模块中的函数:
a < b => operator.lt(a, b)
a == b => operator.eq(a, b)
a in b => operator.contains(a, b)
a is b => operator.is_(a, b)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1335 次 |
| 最近记录: |