[Pythonのはじめ方] Part20: クラスとインスタンス

Python

オブジェクト指向の第一歩を踏み出そう! 🐾

いよいよオブジェクト指向プログラミング (OOP) の世界へようこそ!
これまでの学習で、基本的な文法やデータ構造、関数などを学んできましたね。ここでは、Pythonプログラミングをさらにパワフルにするための重要な概念、「クラス」と「インスタンス」について学びます。

オブジェクト指向は、現実世界の「モノ」をプログラム内で表現するための考え方です。最初は少し難しく感じるかもしれませんが、使いこなせるとコードが整理され、再利用しやすくなり、大規模な開発も効率的に進められるようになります。 💪

クラスとは? 🤔 設計図をイメージしよう

クラス (Class) は、オブジェクト(モノ)を作るための「設計図」や「テンプレート」のようなものです。 クラスには、そのオブジェクトが持つべきデータ(属性)と、できる操作(メソッド)が定義されます。

例えば、「犬」というクラスを考えてみましょう。

  • 属性 (データ): 名前、犬種、年齢、色 など
  • メソッド (操作): 吠える、走る、尻尾を振る など

このように、クラスは特定の種類のオブジェクトに共通する特徴や振る舞いをまとめたものです。クラス自体は設計図なので、それだけでは具体的な「犬」にはなりません。

インスタンスとは? 👤 設計図から作られた実体

インスタンス (Instance) は、クラスという設計図に基づいて実際に作られた「実体」のことです。 クラスからインスタンスを作成することをインスタンス化と呼びます。

先ほどの「犬」クラスを例にとると:

  • 「ポチ」という名前の柴犬 (3歳、茶色)
  • 「ハチ」という名前の秋田犬 (5歳、白)

これらはそれぞれ「犬」クラスから作られたインスタンスです。どちらも「犬」クラスで定義された属性(名前、犬種、年齢、色)とメソッド(吠える、走る、尻尾を振る)を持っていますが、属性の値(名前や年齢など)はインスタンスごとに異なります。

例え話 🍪: クラスが「クッキーの型」、インスタンスがその型で作られた「クッキー」と考えると分かりやすいかもしれません。同じ型を使っても、生地の材料や焼き加減で色々なクッキーが作れますよね。

クラスの定義方法

Pythonでクラスを定義するには、class キーワードを使います。クラス名は慣習的に、各単語の先頭を大文字にする「CapWords (キャピタライズドワーズ)」または「アッパーキャメルケース」と呼ばれる形式で記述します。


# クラスを定義する
class Dog:
    # passは何もしないという命令。クラスの中身を後で書く場合に使う。
    pass

# クラス名は慣習的に大文字で始める (例: MyClass, Dog, Car)
        

これで、中身はまだ空ですが Dog というクラスが定義できました。

クラスの中には、属性やメソッドを定義していきます。(これらは次のステップ「コンストラクタとメソッド」で詳しく学びます。)

インスタンスの作成と利用

定義したクラスからインスタンスを作成するには、クラス名の後ろに () をつけて呼び出します。これは関数を呼び出すのと似ていますね。


# Dogクラスの定義 (先ほどと同じ)
class Dog:
    pass

# Dogクラスからインスタンスを作成(インスタンス化)
pochi = Dog()
hachi = Dog()

# pochi と hachi はそれぞれ Dog クラスのインスタンス
print(pochi)
print(hachi)

# 型を確認すると、__main__.Dog と表示される (実行環境により表示は異なる)
print(type(pochi))
        

上記のコードでは、Dog クラスから pochihachi という2つのインスタンスを作成しました。現時点では Dog クラスに属性やメソッドが定義されていないため、できることは少ないですが、これでクラスから実体(インスタンス)が作れることがわかりました。

インスタンスが持つ属性にアクセスしたり、メソッドを呼び出したりするには、ドット (.) を使います。(これも次回詳しく学びます。)


# 例:もし Dog クラスに name 属性があれば... (今はまだ定義していないのでエラーになります)
# pochi.name = "ポチ"
# print(pochi.name)

# 例:もし Dog クラスに bark() メソッドがあれば... (今はまだ定義していないのでエラーになります)
# pochi.bark()
        

まとめ

今回は、オブジェクト指向プログラミングの基本となる「クラス」と「インスタンス」について学びました。

  • クラス: オブジェクトの設計図・テンプレート。属性(データ)とメソッド(操作)を定義する。
  • インスタンス: クラスから作成された実体。クラスの属性やメソッドを持つが、属性の値はインスタンスごとに異なる場合がある。
  • インスタンス化: クラスからインスタンスを作成すること。クラス名() のように記述する。

クラスとインスタンスは、データを構造化し、コードを部品化するための強力なツールです。 次のステップでは、インスタンスが作られるときに初期設定を行う「コンストラクタ (__init__)」や、インスタンスが持つ操作である「メソッド」について詳しく見ていきましょう! ✨

参考情報

コメント

タイトルとURLをコピーしました