从类中的类调用函数

时间:2013-09-02 05:19:47

标签: python

编辑:我向你保证,当我通过python运行时,一切都正确缩进。我认为问题与我如何调用p._x和p._y有关,但我不确定为什么?

这是一个问题,我有很多困难。它没有意义。我必须通过程序检查器提交,所以它检查代码并确保其正确。如果它不正确,它会发出无用的错误报告。

好的,这就是我想要做的: 我需要计算两个向量(x,y)之间的距离。

这是程序运行的测试用例:

foo = Point(1,2)
bar = Point(3,4)
foo.dist_to_point(bar) = 2.8...

这是我的代码:

import math
class Point:
    def __init__(self, x, y):
      self._x = x
      self._y = y


    def dist_to_point(self, p):
      a = self._x - p._x
      b = self._y - p._y
      c = math.sqrt(a**2+b**2)
      return c

它不起作用。 它给我的错误是“你试图索引到一个点对象。它们不是列表或元组 - 对于点对象p使用p._x和p._y来访问所需的变量。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

Python要求所有缩进都相同。我看到你正在使用标签和空格的混合,所以你的代码甚至不能正确编译。这是你上面的相同代码,只是所有的缩进都是两个空格而不是标签和空格的混合(它编译和工作!):<​​/ p>

import math
class Point:
  def __init__(self, x, y):
    self._x = x
    self._y = y

  def dist_to_point(self, p):
    a = self._x - p._x
    b = self._y - p._y
    c = math.sqrt(a**2+b**2)
    return c


foo = Point(1,2)
bar = Point(3,4)
print(foo.dist_to_point(bar))

选择标签或空格 - 不要同时使用它们。 :)

答案 1 :(得分:1)

疯狂的猜测:

  • 在其他地方,在未显示的代码中,您应该使用一组点,但是您使用单点。

  • 您应该实现对点坐标的索引访问。

您应该查看作业。