假設我有一個向量(A_1,A_2,A_3,...,A_N)Python類:使用添加一個數字,每一個元素的矢量__add__
,我想添加一個數字的每個元素我的矢量在Python類中使用__add__。
使得:
A =矢量(7,4,2)
打印一個+ 3
將輸出:(10,7,5)
請幫助。我的代碼是什麼問題?
非常感謝。
假設我有一個向量(A_1,A_2,A_3,...,A_N)Python類:使用添加一個數字,每一個元素的矢量__add__
,我想添加一個數字的每個元素我的矢量在Python類中使用__add__。
使得:
A =矢量(7,4,2)
打印一個+ 3
將輸出:(10,7,5)
請幫助。我的代碼是什麼問題?
非常感謝。
class Vector():
def __init__(self, *args):
self.args = args
def __add__(self, other):
return tuple(map(lambda x:x+other,self.args))
a = Vector(1,2,3,4,5)
print a+3
你好,非常感謝。我也嘗試這個,它也工作得很好。 –
不客氣:) – sinceq
這裏有一個簡單的實現:
class vector(object):
def __init__(self, *args):
self.args = args
def __add__(self, other):
if not isinstance(other, int):
raise TypeError("Cannot add {} with {}".format(type(self), type(other)))
return vector(*(arg + other for arg in self.args))
def __repr__(self):
return "vector({})".format(", ".join(map(str, self.args)))
a = vector(7, 4, 2)
print a + 3 # (10, 7, 5)
輸出:
vector(10, 7, 5)
我以爲你(10, 7, 4)
本來是(10, 7, 5)
我建議實現'__str__'而不是'__repr__'。 'repr'類似於內置類型的類可能令人難以置信地被檢測到。 – user2357112
啊,是的好點。讓我解決這個問題! –
你好!非常感謝您的幫助。這段代碼工作得很好。也感謝您使用\ __ repr__,我也會使用它。我是python類的新手。再次感謝你的幫助。 –
你如何構建你的載體和存儲a1到? – iMom0