我正在尝试使用类和方法在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
x1/ x2
,...的距离来自哪里?似乎您的代码想凭空想到它们...
同样,该方法被声明为def distance(self),因此它显然只有一个参数(对对象本身的引用),并且不允许将任何其他参数传递给它。
您真正想要的是distance
方法的参数,您可以在其中传递参考对象以计算距离。并且您需要使用参考对象和自身对象的坐标来计算距离:
def distance(self, other):
d = sqrt( (self.x - other.x)\*2 + ...
这个示例是故意不完整的,但是您应该明白这一点。您可能真的想读一读如何在Python中进行面向对象的编程(以及大概如何进行面向对象的编程)。
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。