首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >__coerce__与__ihook__的区别是什么?

__coerce__与__ihook__的区别是什么?
EN

Stack Overflow用户
提问于 2011-03-19 04:45:10
回答 1查看 238关注 0票数 2

在python中,有__coerce____ihook__。根据PEP 203 (增强分配),它们都被调用,按照在对象上执行就地操作的顺序,首先调用__coerce__,然后调用__ihook__。我不知道这些方法是否是专门为扩充赋值而设计的,但我想知道这两种方法之间的实际区别。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-19 05:13:22

PEP中__ihook__代表以下方法之一:

代码语言:javascript
运行
复制
    __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)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5357648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档