__在实例方法的返回值上调用str\方法

2024-03-28 17:41:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个模块来画线并找到它们的中点。出于测试的目的,我想从相关类中创建一些字符串输出。你知道吗

class Line:
  def __init__(self, endpoints):
    self.start = endpoints[0]
    self.end = endpoints[1]

  def midpoint():
    x = (start.getX + end.getX) / 2.0
    y = (start.getY + end.getY) / 2.0
    return Point(x, y)

  def __str__(self):
    return "line from " + `self.start` + " to " + `self.end` + "."

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

  def getX():
    return x

  def getY():
    return y

  def __str__(self):
    return "[" + str(self.x) + ", " + str(self.y) + "]"

  __repr__ = __str__

point1 = Point(4,5)
point2 = Point(0,0)
line1 = Line([point1, point2])

print line1
print line1.midpoint

预期产量:

line from [4, 5] to [0, 0]
[2.0, 2.5]

相反,我得到:

line from [4, 5] to [0, 0]
<bound method Line.midpoint of <__main__.Line instance of 0x105064e18>>

如何获得作为Point类实例返回的中点的预期字符串表示形式?你知道吗


Tags: tofromselfreturndeflinestartend
2条回答

打印的是方法本身,而不是方法的返回值。将最后一行改为:

print line1.midpoint()

此外,方法的第一个定义行应使用self作为唯一参数,如下所示:

def midpoint(self):

这同样适用于其余的方法,它们应该使用self作为参数(点.getX以及点.getY). 你知道吗

在中点法中,你应该开始.getX(), 开始.getY(), 结束.getX(),和结束.getY()前面应该有“self.”。对于类中的每个方法,还应该将“self”作为方法的参数。你知道吗

midpoint method

我将粘贴下面的整个代码,向您展示我所做的一切。你知道吗

entire code

相关问题 更多 >