定义Python类

2024-10-17 21:41:25 发布

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

我是Python的初学者,正如我在前面的问题中所说的,我遇到的一些主题没有得到我理解所需的深入解释和材料,所以我有一个问题。被问到的问题是“将方法distance()添加到类点”。它接受另一个Point对象作为输入,并返回到该点的距离(从调用该方法的点开始)。在

当这些都输入到模块中时,它要寻找的是以下结果

>>> c = Point()
>>> c.setx(0)
>>> c.sety(1)
>>> d = Point()
>>> d.setx(1)
>>> d.sety(0)
>>> c.distance(d)
1.4142135623730951

以下是我所拥有的:

^{pr2}$

然后我不确定是否需要用什么方式来定义距离。谢谢您。在

我有一个明确的底线,我很确定我会如何开始这项工作,但当谈到定义距离时,我很难接受。在


Tags: 模块对象方法距离主题定义方式distance
2条回答

下面是一个没有set-and-get的示例。__init__是可选的。我添加了__call__,而不是get。在

class Point:
    def __init__(self, *terms):
        self.x = 0
        self.y = 0
    def __call__(self):
        return(self.x, self.y)
    def move(self, dx, dy):
        self.x += dx
        self.y += dy
    def distance(self, other):
        dist = math.hypot(self.x - other.x, self.y - other.y)
        return dist

>>> c = Point()
>>> c.x = 0
>>> c.y = 1
>>> d = Point()
>>> d.x = 1
>>> d.y = 0
>>> c()
(1, 0)
>>> c.distance(d)
1.4142135623730951

你需要这样的方法

def distance(self, other):
    dist = math.hypot(self.x - other.x, self.y - other.y)
    return dist

您还需要在程序开始时import math

旁白:有你的setxsety方法根本就不是Python。你应该直接分配给属性。例如c.x = 0

^{pr2}$

相关问题 更多 >