__init__メソッド
__init__メソッドはインスタンスを生成した直後に処理を実行することができるメソッドです。
「クラス名()
」でインスタンスを生成した直後に自動で呼び出されます。
__init__メソッドは他のインスタンスメソッドと同様に定義することができます。
class FruitPrice:
def __init__(self):
print('自動で出力されました')
fruit_price = FruitPrice()
自動で出力されました
と記述することで、fruit_price = FruitPrice()
でFruitPriceクラスのインスタンスが生成された直後に__init__メソッドが呼び出され、その中の処理が実行されます。
これまでは、インスタンスメソッドがinfo
であればfruit_price.info()
と記述しなければ呼び出すことができませんでした。
__init__メソッドを用いる利点
これまでは、
1.クラスを用意する
2.クラスからインスタンスを生成する
3.インスタンス変数に値を代入する
を順に行っていたが、__init__メソッドを用いることで手順の2,3をまとめて、
「インスタンス生成すると同時にインスタンス変数に値を代入する」を行うことができます。
class FruitPrice:
def __init__(self):
self.name = 'apple' # インスタンス生成直後にインスタンス変数nameに'apple'を代入
fruit_price = FruitPrice()
print(fruit_price.name)
apple
と記述することで、インスタンス生成直後にインスタンス変数nameに'apple'を代入することができました。
しかし上記のままだと、どのインスタンスにもnameが'apple'になってしまいます。
そのため、__init__メソッドに引数を渡すことで、インスタンスごとに値を変えることができます。
__init__メソッドは通常のインスタンスメソッドと同じように、引数を受け取ることもできます。
その際、インスタンスを生成している「クラス名()
」に対して引数を渡すことで、__init__メソッドにその値を渡すことができます。
class FruitPrice:
def __init__(self, name): # nameに'apple'が渡されている
self.name = name
fruit_price = FruitPrice('apple')
print(fruit_price.name)
apple