python - 在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))
解决方案
问题来自这一行:
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} 的点。
推荐阅读
- java - 如何在 Oracle SQL Developer 上修复“java.libary.path 中没有 ocijdbc12”?
- ubuntu-16.04 - 从 Ubuntu 中删除 git 机密
- swift - 使用“CodingKeys”枚举仅覆盖少数 JSON 键
- html - 图标未在圆形标签内垂直居中显示
- php - 使用php从文本文件中提取值
- sql - 子查询和普通查询得出不同的结果
- php - 如何将表单验证错误放在警告框中?
- linux - Spring Boot Index jsp 在本地主机上工作,但在 linux 服务器中找不到
- selenium - 通过 PID 进程杀死 GeckoDriver [Java]
- java - 无法将 Jersey 重定向迁移到 Spring 重定向