Python

【Python】第5章第2回:クラスとインスタンスの基本

本記事では、Pythonのオブジェクト指向プログラミングの基盤となる「クラス」と「インスタンス」の基本について解説します。これらを理解することで、効率的で柔軟なコード設計が可能になります。

0. 記事の概要

この記事を読むメリット

  • クラスとインスタンスの基礎理解:Pythonのオブジェクト指向の出発点を学べます。
  • コードの再利用性を向上:汎用的なコード設計の方法を習得できます。
  • チーム開発でのスキル向上:他の開発者と効率的に連携できる知識が身に付きます。

この記事で学べること

  • クラスとインスタンスの定義と役割
  • クラスの基本的な構造
  • インスタンスを使用した実践的な例

1. クラスとインスタンスとは?

1.1 クラスの定義

クラスは、オブジェクトの設計図として機能します。属性やメソッドをまとめた構造です。

1.2 インスタンスの定義

インスタンスは、クラスから生成された具体的なオブジェクトのことを指します。

1.3 クラスとインスタンスの関係

クラスは設計図、インスタンスはその設計図を基に作成された実体と考えると分かりやすいです。

2. クラスの定義方法

2.1 クラスの基本構造

# クラスの基本例
class Person:
    def __init__(self, name, age):
        self.name = name  # インスタンス変数
        self.age = age    # インスタンス変数

    def introduce(self):
        print(f"私は{self.name}、{self.age}歳です。")
動作解説
  1. __init__メソッドはコンストラクタで、インスタンス生成時に呼び出されます。
  2. self.nameself.ageはインスタンスごとに異なるデータを保持します。

2.2 クラスを用いたインスタンスの作成

# インスタンスの作成と使用
person1 = Person("太郎", 25)
person1.introduce()
動作解説
  1. person1はクラスPersonのインスタンスです。
  2. introduceメソッドを呼び出すと、インスタンスごとのデータが出力されます。

3. クラスとインスタンスの活用例

3.1 複数のインスタンスを操作

# インスタンスのリストを操作
people = [
    Person("太郎", 25),
    Person("花子", 30),
    Person("次郎", 20),
]

for person in people:
    person.introduce()
動作解説
  1. リストpeopleに複数のインスタンスを格納します。
  2. ループを使用して、各インスタンスのintroduceメソッドを呼び出します。

4. 練習問題

以下の課題に挑戦してみましょう。

  1. 「Car」というクラスを作成し、車のブランドとモデルを属性として保持してください。
  2. クラスにdescribeメソッドを追加し、車の情報を出力してください。

5. 練習問題の解答と解説

問1の解答例

# Carクラスの例
class Car:
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model

問2の解答例

# describeメソッドを追加
class Car:
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model

    def describe(self):
        print(f"この車は{self.brand}の{self.model}です。")

6. まとめ

クラスとインスタンスの基本を理解することで、効率的なコード設計が可能になります。練習問題を通じて、理解を深めてください。