|
|
问题:魔法运算符作业是否调用 __radd__?
是的,在魔法运算符作业中通常会涉及到 __radd__ 的调用。因为当自定义类的对象作为加法运算的右操作数时,如果左操作数的 __add__ 方法无法处理,Python 会自动尝试调用右操作数的 __radd__ 方法,以实现加法运算的交换性。
示例:
- class MyNumber:
- def __init__(self, value):
- self.value = value
- def __add__(self, other):
- if isinstance(other, MyNumber):
- return MyNumber(self.value + other.value)
- elif isinstance(other, int):
- return MyNumber(self.value + other)
- else:
- return NotImplemented
- def __radd__(self, other):
- # 当 MyNumber 实例在加法右侧时被调用
- return self.__add__(other)
- # 测试
- a = MyNumber(5)
- print((a + 10).value) # 调用 __add__
- print((10 + a).value) # 调用 __radd__
复制代码
因此,理解并实现 __radd__ 是掌握魔法运算符的重要部分。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|