classを使うことで、関連するデータや関数をひとまとめにして扱うことができます。
その中でも、__init__メソッドは特別な役割を果たします。
そこで、この記事では、Pythonの__init__メソッドに焦点を当て、その基本的な使い方から応用例まで解説します。
クラス(class)とは何か?
classは、オブジェクト指向プログラミング(OOP)において、データと関数を組み合わせたものです。
データは「属性(attribute)」、関数は「メソッド(method)」と呼ばれます。
classを定義することで、その設計図を元に複数のオブジェクト(インスタンス)を作成することができます。
class MyClass: pass
上記のコードは、MyClassという名前のclassを定義しています。
passは、何もしない文ですが、Pythonではブロックが必要な構文であるため、一時的なものとして記述しています。
__init__メソッドとは何か?
__init__メソッドは、classがインスタンス化される際に自動的に呼び出される特殊なメソッドです。
主な役割は、インスタンスの初期化です。インスタンス化とは、classからオブジェクトを生成することを意味します。
class Person: def __init__(self, name, age): self.name = name self.age = age person1 = Person("Taro", 30) print(person1.name) # 出力: Taro print(person1.age) # 出力: 30
Personクラス内の__init__メソッドでは、nameとageという引数を受け取り、それらをインスタンスの属性として設定しています。
__init__メソッドの応用例
デフォルト引数を持つ__init__メソッド
__init__メソッドにデフォルト引数を指定することもできます。
class Circle: def __init__(self, radius=1): self.radius = radius circle1 = Circle() print(circle1.radius) # 出力: 1 circle2 = Circle(5) print(circle2.radius) # 出力: 5
初期化処理の追加
__init__メソッド内で、初期化処理以外の処理を追加することもできます。
class Dog: def __init__(self, name): self.name = name self.tricks = [] # 犬のトリックを空のリストとして初期化 def add_trick(self, trick): self.tricks.append(trick) dog1 = Dog("Buddy") dog1.add_trick("roll over") print(dog1.tricks) # 出力: ['roll over']