- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
你好
试图理解 __radd__
是如何工作的。我有代码
>>> class X(object):
def __init__(self, x):
self.x = x
def __radd__(self, other):
return X(self.x + other.x)
>>> a = X(5)
>>> b = X(10)
>>> a + b
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
a + b
TypeError: unsupported operand type(s) for +: 'X' and 'X'
>>> b + a
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
b + a
TypeError: unsupported operand type(s) for +: 'X' and 'X'
为什么这不起作用?我在这里做错了什么?
最佳答案
“这些函数只有在左操作数不支持相应操作且操作数类型不同时才会调用。”
由于操作数是同一类型,所以需要定义__add__
。
关于python - 为什么 __radd__ 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298264/
我希望我的 Fraction 类在添加到 float 或整数时作为 float 工作,这样我就可以自然地用它执行操作,但它仅在 Fraction 时才起作用> 是最右边的操作数。有没有办法让它以任何顺
你好 试图理解 __radd__ 是如何工作的。我有代码 >>> class X(object): def __init__(self, x): self.x = x
我目前正在学习 python 运算符重载(准确地说是 __radd__ 和 __add__),我有以下代码 class Commuter1: def __init__(self, val):
我正在(作为练习)尝试制作一个使用罗马数字的类(class)。我试图将尽可能多的功能放入其中,所以我考虑让运算符(operator)在它们上工作。我发现(例如,问题在其他方法对中仍然存在)__add_
在 python 中,您可以覆盖右(和左)加法运算符 ( + ): 让我们将这个虚拟对象用于以下目的: class Dummy(object): pass ## dummy object 这是一
当使用 __radd__ 方法创建定义 noddy.Noddy 类型的 python (2.7.5) 扩展时,它会获得与(否则等效)python 不同的行为具有自定义 __radd__ 的已定义类对象
这个问题在这里已经有了答案: Custom class with __add__ to add with NumPy array (1 个回答) 关闭 9 个月前。 考虑以下 python 代码:
假设我们写一个小类: class K: pass obj = K() 是下面的代码... total = 4 + obj ...本质上和下面一样? import io try: tot
str 还有其他方法,如 __rmod__、__rsub__ 或 __rmul__ int 确实有一个 __radd__ 方法 很奇怪,我想知道为什么。 当第一个学期有 add 方法时调用的 radd
在Python中,如果我想要一个实例直接返回字段的字符串,我可以这样做: class X: def __init__(self, field): self.field = fi
我是一名优秀的程序员,十分优秀!