[Pythonのはじめ方] Part21: コンストラクタ(__init__)とメソッド

Python

オブジェクト指向プログラミングの基本を学ぼう!

前回はクラスとインスタンスの基本について学びましたね。クラスは設計図で、インスタンスはその設計図から作られた実体でした。

今回は、インスタンスが作られるときに最初に呼ばれる特別なメソッド「コンストラクタ(__init__)」と、インスタンスが持つ操作「メソッド」について詳しく見ていきましょう!これらを理解することで、より実用的なクラスを作成できるようになります。💪

1. コンストラクタ (__init__) とは? 🤔

コンストラクタは、クラスからインスタンスを作成するときに自動的に呼び出される特別なメソッドです。メソッド名は __init__(アンダースコア2つ + init + アンダースコア2つ)と決まっています。

主な役割は、インスタンスの初期化です。インスタンスが作られた直後に、そのインスタンスが持つべき属性(データ)に初期値を設定するために使われます。

例を見てみましょう。


class Dog:
    # コンストラクタ (__init__メソッド)
    def __init__(self, name, breed):
        print(f"{name}という名前の{breed}が生まれたワン! 🐾")
        # インスタンス変数(属性)を初期化
        self.name = name
        self.breed = breed

# インスタンスを作成 (この瞬間に __init__ が呼ばれる)
my_dog = Dog("ポチ", "柴犬")
another_dog = Dog("ハチ", "秋田犬")

# インスタンスの属性にアクセス
print(f"私の犬の名前は {my_dog.name} で、犬種は {my_dog.breed} です。")
print(f"もう一匹の犬の名前は {another_dog.name} で、犬種は {another_dog.breed} です。")
        

💡 self って何?

__init__ メソッドの最初の引数 self は、作成されるインスタンス自身 を指します。Pythonが自動的に渡してくれるので、自分で指定する必要はありません。

self.name = name のように書くことで、「このインスタンスのnameという属性に、引数で受け取ったnameの値を設定する」という意味になります。これにより、各インスタンスが固有のデータを持つことができます。

コンストラクタを使うことで、インスタンス作成時に必要な情報を渡し、初期状態を確実に設定することができます。

2. メソッドとは? 🛠️

メソッドは、クラス内に定義された関数のことです。クラスの属性(データ)にアクセスしたり、特定の操作を実行したりするために使われます。

メソッドも、最初の引数として self を受け取るのが一般的です。これにより、メソッドはそのメソッドが呼び出されたインスタンス自身の属性にアクセスしたり、変更したりできます。

先ほどの Dog クラスに、自己紹介するメソッドを追加してみましょう。


class Dog:
    # コンストラクタ
    def __init__(self, name, breed):
        print(f"{name}という名前の{breed}が生まれたワン! 🐾")
        self.name = name
        self.breed = breed

    # メソッド (自己紹介)
    def introduce(self):
        # self を使ってインスタンス自身の属性にアクセス
        print(f"ワン! 僕の名前は {self.name} だよ。犬種は {self.breed} だワン!")

    # メソッド (鳴く)
    def bark(self, sound="ワンワン!"):
        print(f"{self.name}: {sound}")


# インスタンスを作成
my_dog = Dog("ポチ", "柴犬")

# メソッドを呼び出す
my_dog.introduce() # 出力: ワン! 僕の名前は ポチ だよ。犬種は 柴犬 だワン!
my_dog.bark()      # 出力: ポチ: ワンワン!
my_dog.bark("キャンキャン!") # 出力: ポチ: キャンキャン!

another_dog = Dog("ハチ", "秋田犬")
another_dog.introduce() # 出力: ワン! 僕の名前は ハチ だよ。犬種は 秋田犬 だワン!
another_dog.bark("グルル...") # 出力: ハチ: グルル...
        

このように、メソッドを定義することで、クラス(設計図)に「振る舞い」や「機能」を追加できます。インスタンスごとにメソッドを呼び出すと、そのインスタンス自身のデータ(self.name など)を使って処理が行われます。

ポイント ✨

  • コンストラクタ (__init__): インスタンス作成時に自動で呼ばれ、主に属性の初期化を行う特別なメソッド。
  • メソッド: クラス内に定義された関数で、インスタンスの操作や振る舞いを定義する。通常、最初の引数 self を通してインスタンスの属性にアクセスする。

3. まとめ 📝

参考情報 📚

より詳しく知りたい場合は、Pythonの公式ドキュメントも参照してみてください。

コメント

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