__coerce__与__ihook__的区别?

Ste*_*ini 2 python

在python中,你有__coerce____ihook__.根据PEP 203(增强的分配),它们被调用,按此顺序执行对象的就地操作,__coerce__调用first和__ihook__next.我不知道这些方法是否专门用于增强赋值,但我想知道两者之间的实际区别.

Joc*_*zel 7

__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).