Class Python中的面向对象编程和类
以下是给我的指示: 创建一个点类,该点类由表示点在x轴和y轴上的位置的有序对x、y组成。构造函数允许传入x和y值,并且应将缺少的值默认为0。您必须重写str方法以将点打印为正常值,即2、5 另外,创建一个由一对点对象p和q组成的线类。行可以通过以下两种方式之一进行实例化Class Python中的面向对象编程和类,class,oop,python-2.7,Class,Oop,Python 2.7,以下是给我的指示: 创建一个点类,该点类由表示点在x轴和y轴上的位置的有序对x、y组成。构造函数允许传入x和y值,并且应将缺少的值默认为0。您必须重写str方法以将点打印为正常值,即2、5 另外,创建一个由一对点对象p和q组成的线类。行可以通过以下两种方式之一进行实例化 somePoint = Point(2, 3) anotherPoint = Point(4, 8) someLine = Line(somePoint, anotherPoint) 或者 在第二种情况下,构造函数应将两
somePoint = Point(2, 3)
anotherPoint = Point(4, 8)
someLine = Line(somePoint, anotherPoint)
或者
在第二种情况下,构造函数应将两个点初始化为原点0,0。您必须重写_ustr_uuu方法以按如下方式打印行:2、5-4、7。类还必须提供返回
段的长度
这是模块文件
到目前为止我的代码
有几件事:
一,。距离函数有一个错误。前四行应该是:
self.x1 = self.coor[0].xy[0]
self.x2 = self.coor[1].xy[0]
self.y1 = self.coor[0].xy[1]
self.y2 = self.coor[1].xy[1]
二,。distance函数不返回任何内容,因此主文件中的distance变量的值为None。将return语句添加到函数中
三,。您应该修复行的字符串表示形式
四,。要求规定点和线的参数应为可选参数。通过为其提供默认值使其成为可选的。如果点类必须在默认坐标0中初始化,则构造函数必须:
class Point():
def __init__(self, x=0, y=0):
self.xy = [x, y]
self.printer = ("(" + str(x) + "," + str(y) + ")")
# ...
之后,Line类的构造函数必须在构造函数中获得两个点实例,默认情况下,与前面的类定义类似,您必须具有
class Line():
def __init__(self, p=Point(), q=Point()):
self.x1 = p.xy[0]
self.y1 = p.xy[1]
self.x2 = q.xy[0]
self.y2 = q.xy[1]
def distance(self):
return math.sqrt((self.x1-self.x2)**2 + (self.y1 - self.y2)**2)
str override方法的定义不正确。如果你想要像你的问题一样的东西,使用
def __str__(self):
return str('(' + str(self.x1) + ', ' + str(self.x2) + ')--(' + str(self.x2) + ', ' + str(self.y2) + ')')
class Point():
def __init__(self, x=0, y=0):
self.xy = [x, y]
self.printer = ("(" + str(x) + "," + str(y) + ")")
# ...
class Line():
def __init__(self, p=Point(), q=Point()):
self.x1 = p.xy[0]
self.y1 = p.xy[1]
self.x2 = q.xy[0]
self.y2 = q.xy[1]
def distance(self):
return math.sqrt((self.x1-self.x2)**2 + (self.y1 - self.y2)**2)
def __str__(self):
return str('(' + str(self.x1) + ', ' + str(self.x2) + ')--(' + str(self.x2) + ', ' + str(self.y2) + ')')