コース: ソフトウェア開発の基礎知識

クラスを作成・使用する

コース: ソフトウェア開発の基礎知識

クラスを作成・使用する

オブジェクト指向プログラミングでは、 現実世界の物事や状況を クラスで表現します。 クラスは他のオブジェクトが どのように作成されるべきかを示す 設計図です。 Python は、クラス予約語で クラスを作成することができます。 どのように作成されるのか、 一緒にクラスを作ってみましょう。 まずは、クラスの予約語を入力し、 そしてクラスの名前を入れます。 ここは、Puppy とします。 この後、括弧、そしてコロンが続きます。 次の行では、init という 特別な関数を使用します。 init の仕事は、 このクラスが動作するために 必要な変数に、値を代入することです。 構文の詳細は気にしないでください。 ここでは、Python のクラスが どのように動くのか、 大まかな理解をします。 そこでまずは、 def 予約語を使うことにします。 そしてアンダースコア2つとinit、 さらにアンダースコア2つ、 そして括弧のセットです。 その中にいくつかの特殊な変数を入れます。 まず、self。 self は クラスの現在のインスタンスを参照します。 詳しくは、後ほど説明します。 次に、name という変数と favorite_toy という 変数を入れていきます。 1つ目には子犬の名前を格納し、 もうひとつには、 お気に入りのおもちゃを格納します。 この関数の中で、まずコロンで区切って 変数を代入します。 self.name は、受け取った名前、 self.favorite_toy は、 受け取ったお気に入りのおもちゃと 同じ値になります。 これで、init 関数はおしまいです。 次に、このクラスにひとつの仕事を 与えようと思います。 play という名前の 新しい関数を作成します。 self を入力として受け取り、 文字列を出力します。 ですので、self を入れて、 コロンを付けて、 print 関数を使います。 ここで子犬の名前を表示します。 self.name から 子犬の名前を取得します。 そして、「は」と書きます。 次に、お気に入りのおもちゃの名前です。 そして最後に、 「で遊んでいます」を入力します。 これは、self.favorite_toy から 取得できます。 この関数は、これで終わりです。 では、Puppy クラスを使って、 いくつかのアクションをしてみましょう。 まず最初に、 このクラスのインスタンスを作成します。 クラス定義は、設計図にすぎないことを 忘れないでください。 コードを動作させるには、 設計図を使って、 何かを構築する必要があります。 クラスのインスタンスを作成するのは まさにこれです。 Python でクラスのインスタンスを 作成するには、 新しい変数を作成し、 その変数にクラスの名前と 括弧内の任意の入力を 代入することができます。 この例では、puppyクラスは 子犬の名前と、お気に入りのおもちゃを 文字列として受け取ります。 ですので、marble という名前の 新しい変数を作りましょう。 この変数にイコールを用いて puppy を代入します。 puppy はクラスの名前です。 そして文字列の marble と お気に入りのおもちゃ、 テディベアを渡します。 puppy クラスの インスタンスができたので、 定義したクラス上のメソッド、 play を呼び出します。 このメソッドを呼び出すには、 Python の特別な構文があります。 変数の名前を使いますが、 この変数がクラスの インスタンスであることに 注意してください。 では、marble と入力し、 ドット、関数名 play そして括弧を入力します。 こうすることで、コンピュータに 作成した特定の子犬に対してのみ、 play 関数を実行したいことを 知らせることができます。 プログラムを実行し、 出力を確認してみましょう。 何が出てきましたか? マーブルはテディベアで遊んでいます。 では、もうひとつクラスのインスタンスを 作ってみましょう。 次は子犬に onyx という名前を付けます。 変数 onyx に イコール記号を用いて、 puppy クラスのインスタンスを 代入します。 そして「オニキス」という名前を付けます。 そして、オニキスの お気に入りのおもちゃは、 トカゲだとします。 そして、先ほどと同じように onyx.play を呼び出して、 最後にもう一度、 プログラムを実行してみましょう。 いいですね。 それぞれの子犬に対する出力が 表示されましたね。 このビデオでは、 Python でクラスを定義し、 そのクラスのインスタンスを作成して、 その関数にアクセスする方法を 学びました。 オブジェクト指向プログラミングの 理解に一歩近づきましたね。

目次