我正在尝试用
Python学习面向对象的编程.为此,我需要创建一个计算线的斜率的方法,该线将原点连接到一个点. (我认为)我们假设原点是(0,0).例如:
Point(4, 10).slopeFromOrigin()
2.5
Point(12, -3).slopeFromOrigin()
-0.25
Point(-6, 0).slopeFromOrigin()
0
我们使用方程slope =(Y2-Y1)/(X2-X1)来计算斜率.此外,由于不允许除以0,因此当方法失败时,我们需要返回None.这是我试过的:
class Point:
#Point class for representing and manipulating x,y coordinates
def __init__(self, initX, initY):
#Create a new point at the given coordinates
self.x = initX
self.y = initY
def getX(self):
return self.x
def getY(self):
return self.y
def distanceFromOrigin(self):
return ((self.x ** 2) + (self.y ** 2)) ** 0.5
#define a method called slopeFromOrigin here
def slopeFromOrigin(self):
#set origin values for x and y (0,0)
self.x = 0
self.y = 0
#slope = (Y2 – Y1) / (X2 – X1)
if (Point(x) – self.x) == 0:
return None
else:
return (Point(y) – self.y) / (Point(x) – self.x)
#some tests to check our code
from test import testEqual
testEqual( Point(4, 10).slopeFromOrigin(), 2.5 )
testEqual( Point(5, 10).slopeFromOrigin(), 2 )
testEqual( Point(0, 10).slopeFromOrigin(), None )
testEqual( Point(20, 10).slopeFromOrigin(), 0.5 )
testEqual( Point(20, 20).slopeFromOrigin(), 1 )
testEqual( Point(4, -10).slopeFromOrigin(), -2.5 )
testEqual( Point(-4, -10).slopeFromOrigin(), 2.5 )
testEqual( Point(-6, 0).slopeFromOrigin(), 0 )
正如你所看到的,我试图说我们需要Point的第一个参数是x2,而Point的第二个参数是y2.我试过这种方式得到了
NameError:名称’y’未在第32行定义.
我也尝试得到Point的索引值,如下所示:
return(Point [0] – self.y /(Point [1] – self.x)
但这也给了我一个错误信息:
TypeError:’Point’不支持第32行的索引
我不确定如何从Point获取x和y参数的值,以便该方法在测试时有效.如果您有任何建议,请分享您的建议.谢谢.