【发布时间】:2019-03-15 13:00:38
【问题描述】:
你好,我正在学习 python,我得到了课程主题。 我收到了这样的错误消息:
"TypeError: __init__() missing 1 required positional argument: 'y'"
这是我的 shell 代码:
class Vektor():
""" Bu bir vektör sınıfıdır"""
def __init__(self,x,y):
self.x = x
self.y = y
def boyu(self):
boy = (self.x**2+self.y**2)**0.5
return boy
def __repr__(self):
return ("%di + %dy" %(self.x, self.y))
def __sub__(self,digeri):
return Vektor(self.x - digeri.x, self.y - digeri.y)
def __add__(self,digeri):
return Vektor(self.x + digeri.x, self.y + digeri.y)
def __eq__(self,digeri):
if self.boyu() == digeri.boyu(): return True
def __mul__(self,digeri):
self.x = Vektor(self.x + digeri.x)
self.y = Vektor(self.y + digeri.y)
return Vektor(self.x*digeri.x,self.y*digeri.y)
当我尝试像这样创建 C = A*B 时出现错误:
TypeError: init() 缺少 1 个必需的位置参数:'y'
我已经谢谢你了,我想提醒一下我是编程新手 :))
【问题讨论】:
-
你可以去掉 __mul__ 的前两行,只留下
def __mul__(self, digeri):return Vektor(self.x * digeri.x, self.y * digeri.y)。 -
如果您向我们解释什么是“向量乘法”,也许会有所帮助。它不能是dot product,因为点积返回一个标量,而不是一个向量。并且不能是cross product,因为叉积需要三个维度的向量。
__mul__真正想要做什么?
标签: python class vector multiplication