我有以下代码:
class Point:
"""Two-Dimensional Point(x, y)"""
def __init__(self, x=0, y=0):
# Initialize the Point instance
self.x = x
self.y = y
@property
def magnitude(self):
# """Return the magnitude of vector from (0,0) to self."""
return math.sqrt(self.x ** 2 + self.y ** 2)
def __str__(self):
return 'Point at ({}, {})'.format(self.x, self.y)
def __repr__(self):
return "Point(x={},y={})".format(self.x, self.y)
这个类有一个称为magnitude的函数。我想创建一个函数,它可以告诉两个点之间的距离大小。以下是预期输出:
point1 = Point(2, 3)
point2 = Point(5, 7)
print(point1.magnitude)
3.605551275463989
print(point2.magnitude)
8.605551275463989
print(point1.distance(point2))
5.0
我试过这样做:
@classmethod
def distance(self):
pointmag1 = point1.magnitude
pointmag2 = point2.magnitude
if pointmag2 > pointmag1:
return pointmag2 - pointmag1
else:
return pointmag1 - pointmag2
但是,这将返回一个错误TypeError:distance()接受1个位置参数,但给出了2个位置参数。我还觉得我采取了一种不正确的方法来解决这个问题,因为除了第1点或第2点以外,没有什么其他的方法能奏效。有谁能做得更好吗?谢谢
编辑:我做了以下修改:
@classmethod
def distance(self, self2):
pointmag1 = point1.magnitude
pointmag2 = point2.magnitude
if pointmag2 > pointmag1:
return pointmag2 - pointmag1
else:
return pointmag1 - pointmag2
但是,它返回4.996773991578637,而不是5。有什么方法可以更改它吗
编辑:我做了以下更改:
@classmethod
def distance(self, self2):
pointmag1 = self.magnitude
pointmag2 = self2.magnitude
if pointmag2 > pointmag1:
return pointmag2 - pointmag1
else:
return pointmag1 - pointmag2
这将返回错误类型error:“>;”“float”和“property”实例之间不支持
您可以实现一个自定义的
__sub__
方法来查找距离:输出:
编辑:
distance
作为方法实现:相关问题 更多 >
编程相关推荐