Python の__init__()メソッド
1. init()メソッド
すべてのクラスには __init__() と呼ばれる組み込み(ビルトイン)メソッドが存在します。このメソッドは、クラスがインスタンス化(イニシャライズ)される際に必ず実行されます。
__init__() メソッドは、オブジェクトのプロパティに値を代入したり、オブジェクトの生成時に必要なセットアップ処理を実行したりするために使用されます。
1.1 使用例
Person という名前のクラスを作成し、__init__() メソッドを使用して name と age に値を代入する例を見てみましょう。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Emil", 36)
print(p1.name)
print(p1.age) 注意:__init__() メソッドは、クラスを使用して新しいオブジェクトが作成されるたびに、自動的に呼び出されます。
2. なぜ init() を使うのか?
__init__() メソッドを使用しない場合、各オブジェクトに対して手動でプロパティを設定する必要があります。
2.1 init() を使用しない例
__init__() なしでクラスを作成した場合:
class Person:
pass
p1 = Person()
p1.name = "Tobias"
p1.age = 25
print(p1.name)
print(p1.age)2.2 init() を使用する例
__init__() を使用することで、初期値を持つオブジェクトの生成がより効率的かつ簡単になります。オブジェクト作成時に初期値を直接設定できます。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Linus", 28)
print(p1.name)
print(p1.age)3. init() でのデフォルト値設定
__init__() メソッドの引数(パラメータ)には、デフォルト値を設定することも可能です。
3.1 デフォルト値の設定例
age 引数にデフォルト値を設定する例:
class Person:
def __init__(self, name, age=18):
self.name = name
self.age = age
p1 = Person("Emil")
p2 = Person("Tobias", 25)
# p1はデフォルトの18が適用され、p2は引数で渡した25が適用される
print(p1.name, p1.age)
print(p2.name, p2.age)4. 複数の引数(パラメータ)
__init__() メソッドには、必要に応じていくつでも引数を持たせることができます。
4.1 複数の引数を持つ Person クラスの例
class Person:
def __init__(self, name, age, city, country):
self.name = name
self.age = age
self.city = city
self.country = country
p1 = Person("Linus", 30, "Oslo", "Norway")
print(p1.name)
print(p1.age)
print(p1.city)
print(p1.country)