python向列表中添加2个对象或对象

python向列表中添加2个对象或对象,python,Python,我有一个vector类,它提供了一个带有列表的向量,我需要能够将向量或向量添加到列表、元组和字符串中。如果它们的长度不同,我需要抛出一个类型错误。输出的一些示例: Vector([6,8,2])+Vector([4,-3,2]) Vector([10, 5, 4]) >>> Vector([6,8,2])+[4,-3,2] Vector([10, 5, 4]) >>> (6,8,2)+Vector([4,-3,2]) Vector([10, 5, 4]) &g

我有一个vector类,它提供了一个带有列表的向量,我需要能够将向量或向量添加到列表、元组和字符串中。如果它们的长度不同,我需要抛出一个类型错误。输出的一些示例:

Vector([6,8,2])+Vector([4,-3,2])
Vector([10, 5, 4])
>>> Vector([6,8,2])+[4,-3,2]
Vector([10, 5, 4])
>>> (6,8,2)+Vector([4,-3,2])
Vector([10, 5, 4])
>>> v=Vector(["f","b"])
>>> v+=("oo","oo")
>>> v
Vector(['foo', 'boo'])
我需要做一个+函数和一个+=函数


我应该使用哪些python方法来覆盖+和+=操作,我还需要确保我的+操作对对象和序列有效,反之亦然,以便以任意顺序完全实现连接。你根本没有实现
\uuuuuuuuuuuuuuuuuuu
(因此
矢量+序列
不起作用,只有
序列+矢量
使用
\uuuuuuuuuuuuuuuuuuuuuuuu
)你把
\uuuuuuuuuuuuiAdd
拼错为
\uuuuuiAdd
(因此
矢量+=任何东西都不起作用).

您可以通过使用
isinstance
来检查
other
参数的类型,例如,
isinstance(other,Vector)
我认为
\u iadd\u
方法就是您要寻找的(对于+=情况)。我让iadd适用于2个向量,我不知道为什么它不适用于向量和序列>>>v=vector([“f”,“b”])>>>v+=(“oo”,“oo”)回溯(最后一次调用):文件“”,第1行,类型错误:不支持的操作数类型对于+=:'instance'和'tuple'>>>哦,我没有注意到这一点。我用与radd完全相同的实现添加了它,它起了作用。@AnatoliySokolov:基本规则是,当实例位于运算符的左侧时,会调用二进制运算符的普通
\uuuuuxxx\uuuuu
方法,
\uuuuuuxxx\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu<代码>可选;对于不可变类型,当缺少
\uuuuixxx\uuuuxx\uuuxx
时,Python使用
\uuuxxx\uuxx
。您可能想看看@AnatoliySokolov:您可能还想看看使用基于操作符的回退方法来避免大量重复代码的技巧;重点是数学运算,但同样的技术也适用于序列运算,而
fracts.fracts
中给出的示例可以大大缩短代码。