在python中,你有__coerce__和__ihook__.根据PEP 203(增强的分配),它们被调用,按此顺序执行对象的就地操作,__coerce__调用first和__ihook__next.我不知道这些方法是否专门用于增强赋值,但我想知道两者之间的实际区别.
该__ihook__PEP代表以下方法之一:
__iadd__
__isub__
__imul__
__idiv__
__imod__
__ipow__
__ilshift__
__irshift__
__iand__
__ixor__
__ior__
Run Code Online (Sandbox Code Playgroud)
它们适用于各自__hook__的运营.例如,a+=b做类似的事情a.__iadd__(b).
__coerce__另一方面,存在强迫共同类型的论证.这意味着coerce(1, 2.0)返回(1.0, 2.0).
所以区别在于他们做了完全不同的事情.有时它们必须一起工作,例如当你这样做时a=1; a+= 2.0- 首先Python强制类型,然后它调用a.__iadd__(2.0).