忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Python】クラスの基本!設計図と実体(インスタンス)を理解する

Pythonを学んでいると必ず出会うのが「クラス(Class)」です。一見難しそうですが、仕組みを理解するとプログラムの整理整頓が劇的に楽になります。今回は、最もシンプルなクラスを作成しながら、その基本構造を解説します。

1. 考え方:設計図(クラス)と実体(インスタンス)

プログラミングにおけるクラスは、よく「たい焼きの型(設計図)」に例えられます。型があるだけでは食べられませんが、その型から作られた「たい焼き(実体)」は食べることができます。

・クラス (Class):データの「設計図」です。
・インスタンス (Instance):設計図から生成された「実体」です。
・メソッド:クラスの中で定義された「関数(ふるまい)」のことです。

2. Pythonサンプルプログラム

挨拶を表示するだけのシンプルなクラスを作成します。クラスを使うには、まず「実体化(インスタンス化)」を行う必要があります。

# -*- coding: utf-8 -*-

class Test:
    # メソッドの定義。第一引数には必ず「self」を書く決まりです。
    def printTest(self):
        print("Hello")

def main():
    # 1. インスタンス化(設計図から実体を作る)
    test = Test()

    # 2. メソッドを呼び出す
    test.printTest()

if __name__ == "__main__":
    main()

3. 実行結果

Hello

4. ステップアップ:謎の引数「self」の正体

クラス内のメソッドを定義する際、必ず最初に self という引数を書きます。これは一体何でしょうか?

  • 自分自身を指すself は「そのメソッドを呼び出しているインスタンス(自分自身)」を指します。
  • 個別のデータを保持する:同じクラスから複数のインスタンスを作った際、それぞれのインスタンスが持つデータを区別するために self が使われます。

※呼び出すときは test.printTest() のように書き、self に値を渡す必要はありません。Pythonが自動的にインスタンス自身を self に放り込んでくれます。

5. クラスと関数の使い分け

単なる処理のまとまりなら「関数」で十分ですが、クラスを使うと以下のメリットがあります。

機能メリット主な用途
関数 シンプルで軽量 入力に対して出力を返すだけの計算など。
クラス 「状態」を保持できる RPGのキャラ(HPや攻撃力を持つ)のように、データと処理をセットにしたい時。

6. まとめ

クラスは「複雑なものを整理するための箱」です。最初は self の記述に違和感があるかもしれませんが、「クラスからインスタンスを作って、メソッドを呼ぶ」という一連の流れに慣れていくことで、大規模な開発もスムーズに行えるようになります!


PR