<p>在代码中:</p>
<pre class="lang-py prettyprint-override"><code>class Segment():
def __init__(self, tup1, tup2):
self.x1 = tup1[0]
self.x2 = tup2[0]
self.y1 = tup1[1]
self.y2 = tup2[1]
self.slope = 0 ### Here
self.length = 0 ### And here
</code></pre>
<p>使Segment类实例的lenght变量等于0(int),slope变量等于0。例如现在:</p>
<pre class="lang-py prettyprint-override"><code>line = Segment((0,0),(1,1))
line.lenght # 0
line.slope # 0
</code></pre>
<p>你知道吗线路长度以及直线斜率不再是行变量的函数。它们是int。int是不可调用的。必须更改函数或变量的名称。也可以通过self.x1、self.y1等更改yor<code>lenght</code>和<code>slope</code>函数中的<code>x</code>和<code>y</code>变量。尝试:</p>
<pre class="lang-py prettyprint-override"><code>class Segment():
def __init__(self, tup1, tup2):
self.x1 = tup1[0]
self.x2 = tup2[0]
self.y1 = tup1[1]
self.y2 = tup2[1]
self.slope = 0
self.length = 0
def Length(self):
self.length = math.sqrt((self.y2-self.y1)**(2+(self.x2-self.x1)**2))
print(self.length)
def Slope(self):
self.slope = ((self.y2-self.y1)/(self.x2-self.x1))
print(self.slope)
</code></pre>
<p>但是如果你想要一个更好的代码,我会给你两种方法。
如果线的位置不变,请使用:</p>
<pre class="lang-py prettyprint-override"><code>class Segment():
def __init__(self, tup1, tup2):
self.x1 = tup1[0]
self.x2 = tup2[0]
self.y1 = tup1[1]
self.y2 = tup2[1]
self.length = math.sqrt((self.y2-self.y1)**(2+(self.x2-self.x1)**2))
self.slope = ((self.y2-self.y1)/(self.x2-self.x1))
</code></pre>
<p>如果线的位置可能改变,请使用:</p>
<pre class="lang-py prettyprint-override"><code>class Segment():
def __init__(self, tup1, tup2):
self.set_points(tup1,tup2)
def set_points(self,tup1,tup2):
self._x1 = tup1[0]
self._x2 = tup2[0]
self._y1 = tup1[1]
self._y2 = tup2[1]
self.length = math.sqrt((self._y2-self._y1)**(2+(self._x2-self._x1)**2))
self.slope = ((self._y2-self._y1)/(self._x2-self._x1))
</code></pre>
<p>我认为你的长度函数不是真的。您可以将Lenght函数替换为:</p>
<pre class="lang-py prettyprint-override"><code>def Length(self):
return math.sqrt((self.x1+self.x2)**2+(self.y1+self.y2)**2)
</code></pre>