我们遇到的问题是创建一个类Segment
,它代表平面中的线段并支持这些方法:
__init__()
:构造函数,它将一对Point对象作为输入,表示线段的端点; length()
:返回细分的长度; slope()
返回细分的斜率,如果斜率无界,则返回None
。>>> p1 = Point(3,4)
>>> p2 = Point()
>>> s = Segment (p1, p2)
>>> s.length()
5.0
>>> s.slope()
0.75
我很困惑如何打印斜坡以及长度。我觉得如果我只是必须创建一个返回这些结果的函数,我会知道如何做到这一点,但能够将这些结果转换为类是真正令我感到困惑的。
答案 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。这是非常基础的,但它将完成工作。