类段表示平面中的线段?

时间:2013-06-05 21:30:40

标签: python

我们遇到的问题是创建一个类Segment,它代表平面中的线段并支持这些方法:

  • __init__():构造函数,它将一对Point对象作为输入,表示线段的端点;
  • length():返回细分的长度;
  • slope()返回细分的斜率,如果斜率无界,则返回None
>>> p1 = Point(3,4)
>>> p2 = Point()
>>> s = Segment (p1, p2)
>>> s.length()
5.0
>>> s.slope()
0.75

我很困惑如何打印斜坡以及长度。我觉得如果我只是必须创建一个返回这些结果的函数,我会知道如何做到这一点,但能够将这些结果转换为类是真正令我感到困惑的。

1 个答案:

答案 0 :(得分:0)

如果您不熟悉面向对象编程,我可能会抛出一些您不熟悉的术语:如果是这种情况,我建议您查找您不知道的任何单词;)

方法和常规函数之间的区别在于该方法由类“拥有”。方法基本上是仅对该类(通常是对象)执行的函数。在python中,通过将方法放在类主体中来声明方法,缩进一次,如下所示:

class MyClass:

    def myMethod(self):
        ...

要记住的一件事是关键字self - 它指的是该类的实例,即特定对象。但是,您不会将其作为括号中的参数传递 - 它是您示例中s之前的.。通过执行s 实例化 s = Segment(p1, p2)时,您创建了名为Segment的类s实例。您必须将self作为第一个参数传递给您的类方法;你怎么知道要操作哪个物体?

__init__()是一种特殊方法,它定义了如何创建该类的新对象。您可以通过键入类名称来调用它,然后在括号中使用您的参数,就好像类名是方法一样。在您的示例Point(3, 4)Segment(p1, p2)

通常,您可以键入s.p1来获取Segment的第一个点,但在您的方法体中,您不知道s是什么,因为声明了类在s实例化之前。但是,您知道要传递self,因此您需要输入self.p1来获取您所引用的p1 Segment

您是否已在某处定义了Point类?查看其代码示例。

如果您需要一些指导练习,我建议您查看codeacademy。这是非常基础的,但它将完成工作。