在python中,有__coerce__和__ihook__。根据PEP 203 (增强分配),它们都被调用,按照在对象上执行就地操作的顺序,首先调用__coerce__,然后调用__ihook__。我不知道这些方法是否是专门为扩充赋值而设计的,但我想知道这两种方法之间的实际区别。
发布于 2011-03-19 05:13:22
PEP中__ihook__代表以下方法之一:
    __iadd__
    __isub__
    __imul__
    __idiv__
    __imod__
    __ipow__
    __ilshift__
    __irshift__
    __iand__
    __ixor__
    __ior__它们是各自__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)。
https://stackoverflow.com/questions/5357648
复制相似问题