(1) Pythonのコンストラクタの基礎と「self」や「__init__」について
(1-1) 「__init__」やコンストラクタについて
(1-2) コンストラクタで使われる「self」について
(1-3) コンストラクタの構文
(1-4) コンストラクタのサンプルプログラム
(1) Pythonのコンストラクタの基礎と「self」や「__init__」について
(1-1) 「__init__」やコンストラクタについて
Pythonで見る「__init__()」はPythonにおける「コンストラクタ」のメソッドです。
コンストラクタは通常はクラスからオブジェクト(≒インスタンス)を初期化(実体化)する際に使われます。具体的にはクラスのオブジェクトが生成される際に、メンバ変数に値をセットする処理を、初期化として行います。
(1-2) コンストラクタで使われる「self」について
コンストラクタで使われる「self」はクラスのインスタンス自身を表します。
(例)
def __init__(self,[引数1],[引数2],[引数3],・・・):
「self」をコンストラクタやメソッドの「引数」として与える事で、クラス内の変数やメソッドにアクセスする事ができます。
(例)
self.[メンバ引数] = [引数]
(1-3) コンストラクタの構文
前の節でもちらっと登場しましたが、コンストラクタの構文は次の通りです。
(構文)
def __init__(self,[引数1],[引数2],[引数3],・・・): self.[メンバ変数1] = [引数1] self.[メンバ変数2] = [引数2] self.[メンバ変数3] = [引数3] ・・・
(図131)コンストラクタの引数に「self」を使用した例
(図132)メソッドの引数に「self」を使用した例
(1-4) コンストラクタのサンプルプログラム
(サンプルプログラム)
class Person: # コンストラクタでメンバ変数を初期化 # 引数のselfはインスタンス自身を表し、 # self.[メンバ変数名]で変数にアクセスできる。 def __init__(self, firstname, lastname, age): self.firstname = firstname self.lastname = lastname self.age = age # メソッドの引数にselfを指定した例 # こちらも同じくself.[メンバ変数名]でインスタンスのメンバにアクセスできる def greeting(self): print('I am',self.firstname,self.lastname,'and my age is',self.age) def main(): # Personクラスのインスタンスを生成 p = Person('Rainbow','Planet',30) # greetingメソッドの実行 p.greeting() if __name__ == '__main__': main()
(図141)実行結果
引数で与えた値を用いて、greetingのメッセージが表示されています。
(コンストラクタにより正常に初期化が行われた)