我有一个任务的问题。我需要编写一个python代码来计算两点之间的二次距离
公式是: D^2=(x1-x2)^2+(y1-y2)^2
我的代码是:
def quadratic_distance(p1: Point, p2: Point) -> float:
# YOUR CODE HERE
class p1:
def __init__(self, x1, y1):
self.x = x1
self.y = y1
class p2:
def __init__(self, x2, y2):
self.x = x2
self.y = y2
result1 = p1.x - p2.x
result2 = result1**2
result3 = p1.y - p2.y
result4 = result3**2
result5 = result2 + result4
return result5
但我的问题是我得到了一个属性错误
AttributeError: type object 'p1' has no attribute 'x'
我是面向对象编程的新手,一直在做这项工作。我希望有人能帮助我
assert quadratic_distance(Point(0, 0),Point(1, 1)) == 1.75
这应该是解决办法
虽然您已经声明了类p1和p2,但还没有创建任何对象。所以,您得到了这个错误。 x和y是类p1和p2的实例,您不能通过它们的类名访问它们。 可以将x和y定义为类内的类变量,也可以定义类p1和p2中的每个对象,如下所示。 p1ob=p1(4,5) p2ob=p2(5,6)
由于尚未创建该类的对象,因此出现错误。在python中,x不是类的属性,而是其对象的属性
所以你可以这样做:
您可以进一步改进它,因为p1和p2具有相同的属性(数据成员和成员函数),所以我们可以只使用一个名为p的类(或任何其他名称),并创建该类的两个对象p1和p2
根据您的公式,点(0,0)和点(1,1)之间的二次距离为2。不是1.75
这是我的密码。试试这个
相关问题 更多 >
编程相关推荐