在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
复制相似问题