【发布时间】:2014-10-31 22:07:27
【问题描述】:
在数据模型部分的官方python文档中,__ipow__ method定义为:
object.__ipow__(self, other[, modulo])
然后,文档解释说 调用这些方法来实现增强的算术分配(**= for __ipow__)
但是允许使用modulo 参数的**= 的语法是什么?
【问题讨论】:
标签: python operator-overloading
在数据模型部分的官方python文档中,__ipow__ method定义为:
object.__ipow__(self, other[, modulo])
然后,文档解释说 调用这些方法来实现增强的算术分配(**= for __ipow__)
但是允许使用modulo 参数的**= 的语法是什么?
【问题讨论】:
标签: python operator-overloading
第三个参数只是为了与__pow__对称。
该参数包含在原始 'add in-place operator equivalents' commit 中,但不支持从 Python 代码中使用它,除了直接调用 __ipow__ 方法。
例如,INPLACE_POWER 操作码将passes in None 作为第三个参数处理:
case INPLACE_POWER:
w = POP();
v = TOP();
x = PyNumber_InPlacePower(v, w, Py_None);
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
if (x != NULL) continue;
break;
即使在 C 代码中也很可能将 __ipow__ 实现为 __pow__ 的别名。
【讨论】: