擅长:python、mysql、java
<p>在<code>__mul__</code>中,您这样做是出于某种原因:</p>
<pre><code>self.x = Vektor(self.x + digeri.x)
</code></pre>
<p>它调用<code>Vektor.__init__</code>,只提供位置参数<code>x</code>,值为<code>self.x + digeri.x</code>,但没有为{<cd5>}提供任何值,因此出现错误。
另外,这还试图将属性<code>x</code>从<code>Vektor</code>本身更改为一个对象,我无法想象这是您想要的。在</p>
<p>对我来说,不清楚您的<code>return</code>语句前面的两行应该做什么。同时这两条线都会产生你看到的错误。在</p>
<p>你的<code>__mul__</code>应该是点积吗?如果是,请尝试:</p>
^{pr2}$
<p>类的另一个简化是允许在坐标上进行迭代,例如:</p>
^{3}$
<p>那么你的点积可能看起来像:</p>
<pre><code>def dot(self, w):
"""
The dot product of self and other vector w.
"""
return sum([xi_s * xi_w for xi_s, xi_w in zip(self, w)])
</code></pre>
<p>有一个<a href="https://github.com/j-i-l/VecPy/blob/master/vecpy/vecpy.py" rel="nofollow noreferrer">VecPy</a>,这是一个非常简单的示例类,它可以做这种事情。也许看看能给你更多的想法。在</p>