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 では、メソッドをクラス本体に配置して宣言し、次のように 1 回インデントします。

class MyClass:

    def myMethod(self):
        ...

覚えておくべきことの 1 つは、キーワードです。selfこれは、そのクラスのインスタンス、つまり特定のオブジェクトを参照します。ただし、括弧内の引数として渡すことはありません。例では、s前にあり.ます。を実行してインスタンス化 sすると、というクラスのインスタンスs = Segment(p1, p2)が作成されます。クラス メソッドの最初の引数として渡す必要があります。どのオブジェクトを操作するかを他にどのように知る必要がありますか?Segmentsself

__init__()そのクラスの新しいオブジェクトを作成する方法を定義する特別なメソッドです。クラス名を入力し、クラス名がメソッドであるかのように引数を括弧内に入力して呼び出します。あなたの例では、それはPoint(3, 4)Segment(p1, p2)です。

s.p1通常、の最初のポイントを取得するためにタイプするかもしれませんが、メソッド本体では、インスタンス化される前にクラスが宣言されているため、何がSegment何であるかわかりません。しかし、あなたは を渡すことを知っているので、あなたが参照しているもののを取得するためにタイプします。ssselfself.p1p1Segment

クラスはすでにPointどこかに定義されていますか?例については、そのコードを見てください。

ガイド付き演習が必要な場合は、codeacademyをチェックすることをお勧めします。それは非常に初歩的ですが、仕事を成し遂げます。

于 2013-06-05T21:47:42.637 に答える