开发者社区> 问答> 正文

3D中两点之间的距离-类,方法和对象,TypeError

我正在尝试使用类和方法在3D中打印两点之间的距离。我得到一个TypeError:distance()接受1个位置参数,但给出了2个。`

这是我的代码,k2和k3是两点的坐标。

import math
class Point:
def __init__(self, x, y, z):
  self.x = x
  self.y = y
  self.z = z
def __str__(self):
  return "point : ({:d}, {:d}, {:d})".format(self.x,self.y,self.z)
def distance(self):
  distance = sqrt( (x1-x2)\*2 + (y1-y2)\*2 + (z1 -z2)\*2 )
  return distance
k2 = Point(5, 7, 8)
k3 = Point(-3, -2, 5)
print(k3.distance(k2))

也尝试过

print(distance(k2, k3))

我收到NameError:未定义名称'distance'

请建议我是否缺少任何东西。

谢谢 !在Mac Terminal上使用python 3.7.4

问题来源:stackoverflow

展开
收起
is大龙 2020-03-23 17:17:10 398 0
1 条回答
写回答
取消 提交回答
  • x1/ x2,...的距离来自哪里?似乎您的代码想凭空想到它们...

    同样,该方法被声明为def distance(self),因此它显然只有一个参数(对对象本身的引用),并且不允许将任何其他参数传递给它。

    您真正想要的是distance方法的参数,您可以在其中传递参考对象以计算距离。并且您需要使用参考对象和自身对象的坐标来计算距离:

    def distance(self, other):
       d = sqrt( (self.x - other.x)\*2 + ...
    

    这个示例是故意不完整的,但是您应该明白这一点。您可能真的想读一读如何在Python中进行面向对象的编程(以及大概如何进行面向对象的编程)。

    回答来源:stackoverflow

    2020-03-23 17:17:16
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
重新定义计算的边界 立即下载
用计算和数据去改变整个世界 立即下载
继承与功能组合 立即下载