py/runtime: Implement dispatch for "reverse op" special methods.
If, for class X, X.__add__(Y) doesn't exist (or returns NotImplemented), try Y.__radd__(X) instead. This patch could be simpler, but requires undoing operand swap and operation switch to get non-confusing error message in case __radd__ doesn't exist.
This commit is contained in:
@@ -441,6 +441,13 @@ const qstr mp_binary_op_method_name[] = {
|
||||
MP_BINARY_OP_INPLACE_TRUE_DIVIDE,
|
||||
MP_BINARY_OP_INPLACE_MODULO,
|
||||
MP_BINARY_OP_INPLACE_POWER,*/
|
||||
|
||||
#if MICROPY_PY_REVERSE_SPECIAL_METHODS
|
||||
[MP_BINARY_OP_REVERSE_ADD] = MP_QSTR___radd__,
|
||||
[MP_BINARY_OP_REVERSE_SUBTRACT] = MP_QSTR___rsub__,
|
||||
[MP_BINARY_OP_REVERSE_MULTIPLY] = MP_QSTR___rmul__,
|
||||
#endif
|
||||
|
||||
[MP_BINARY_OP_LESS] = MP_QSTR___lt__,
|
||||
[MP_BINARY_OP_MORE] = MP_QSTR___gt__,
|
||||
[MP_BINARY_OP_EQUAL] = MP_QSTR___eq__,
|
||||
|
||||
Reference in New Issue
Block a user