0

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

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

我对如何让它打印斜率和长度感到困惑。如果我只需要创建一个返回这些结果的函数,我觉得我会知道如何做到这一点,但是能够将这些转换为类是真正让我感到困惑的地方。

4

1 回答 1

0

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

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

class MyClass:

    def myMethod(self):
        ...

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

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

通常,您可能会键入s.p1以获取 a 的第一个点Segment,但在您的方法主体中,您不知道是什么s,因为类是在s实例化之前声明的。但是,您确实知道 pass self,因此您将键入以self.p1获取您所指的那个。p1Segment

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

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

于 2013-06-05T21:47:42.637 回答