首页 > 解决方案 > 在python中查找两点之间的距离,通过两个不同的对象传递输入

问题描述

我必须编写一个代码来通过如下两个对象传递值来找到两点之间的差异。但我收到 TypeError: init () missing 3 required positional arguments: 'x'、'y' 和 'z'

class Point:
    def __init__(self, x, y,z):
        self.x = x
        self.y = y
        self.z = z

    def __str__(self):
        return '(point: {},{},{})'.format(self.x, self.y, self.z)

    def distance(self, other):
        return sqrt( (self.x-other.x)**2 + (self.y-other.y)**2 + (self.z -other.z)**2 )      


p = Point()

p1 = Point(12, 3, 4)

p2 = Point(4, 5, 6)

p3 = Point(-2, -1, 4)

print(p.distance(p1,p3))

标签: pythonclassmethods

解决方案


问题来自这一行:

p = Point()

当你定义你的类时,你指定它必须被传递 3 个参数才能被初始化(def __init__(self, x, y,z))。

如果您仍然希望能够创建此 Point 对象而无需传递这 3 个参数,您可以将它们设为可选,如下所示:

def __init__(self, x=0, y=0, z=0):
    self.x = x
    self.y = y
    self.z = z

这样,如果您不指定这些参数(如您所做的那样),它将默认创建一个坐标为 {0, 0, 0} 的点。


推荐阅读