2025年1月10日

018-1.SPIKEプライムPython入門-第7回「クラスの使い方(その1)」

この連載では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」を使ったPython(SPIKEアプリ)によるプログラミングの方法を紹介します。 Python(パイソン)はプログラミング言語の一つです。Pythonは教育や人工知能の研究など様々な分野で使われていて、人気があります。 Pythonの主な特徴はオブジェクト指向を採用していることです。オブジェクト指向というのはプログラムの機能をオブジェクトという単位で切り分けて扱う手法のことです。オブジェクト指向は複雑なプログラムを作る場合に効果を発揮します。(文/松原拓也)

◆ クラスとは

今回は「クラス」の使い方を紹介します。クラスはPythonでおそらく最も重要な機能なのですが、覚えることが難しい機能です。クラスはできることたくさんありますので、今回は一部の機能だけを紹介します。

クラスとはなんでしょうか? 学校で「1年2組」とかをクラスと呼びますが、あのクラスと同じようなものです。学校では人の集まりをクラスと呼びますが、Pythonではプログラムや変数の集まりのことをクラスと呼びます。 Pythonでは「class クラス名~」と記述することで、新しいクラスを定義します。定義とは、構造のルールを決めるということです。
この例では「DenwaClass」というクラスを定義しています。これは電話番号を記憶するためのクラスです。続いて、「def __init__~」という記述がありますが、これはオブジェクトを作った時に最初に呼び出される関数です。ここでは「bangou」という変数を作ることにします。「self」は自分自身のオブジェクトを示すための変数です。クラスでは複数のオブジェクトが作り出せるので、他と区別するためにこの「self」を使っています。この書式が複雑すぎますが、ひとまず丸暗記して、理屈で考えるのは後回しにしたほうがいいと思います。

上記で定義した「DenwaClass」クラスを図にすると、このような構造をしています。

たとえば「keisatsu = DenwaClass(110)」という命令を実行したとします。
すると、「keisatsu」という名前のオブジェクトが作成されます。そして、keisatsuオブジェクトの中には「bangou」という変数が存在しています。変数bangouの中身は「110」です。
このように変数の中に変数があるような使い方がクラスでは可能となります。

先のプログラムを実行すると、「keisatsu」「kyuukyuu」「tenki」という3つのオブジェクトが作られます。
図で表現すると、こうなります。各オブジェクトの中にある変数bangouには別々の値が代入されています。

プログラムを実行してみましょう。
LEDマトリクスに「119」と表示されました。オブジェクトの中にある変数を扱うには「.」で区切って記述します。 なので、「kyuukyuu.bangou」と記述すると、オブジェクトkyuukyuuの中の変数bangouの値を表示することができます。

◆ 電話帳を作る

DenwaClassクラスをもう少し実用的なものに改良してみましょう。 先ほどは電話番号しか記憶できなかったのですが、今回は名前も記憶できるようにします。

DenwaClassクラスの構造を図にしてみました。変数「namae」を追加しています。
これで、電話帳を作ります。

さらに、「denwatyou」という配列を作って、オブジェクトを記憶します。「denwatyou.append(オブジェクト名)」という処理を行って、3種類のオブジェクトを記憶してみました。
図で表現すると、こうなります。

プログラムを実行すると、電話帳を検索します。
forループを使って、変数keyとdenwatyou.namaeの中身を比較します。もし、中身が同じ場合はbangouの中身を表示します。
ここでは「kyuukyuu」という名前をキーにして検索しています。結果、LEDマトリクスには「119」と表示されます。

次回はさらに高度なクラスの使い方を紹介します。
今回作成したプログラム(SPIKEアプリ用)

当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。