(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のメッセージが表示されています。
(コンストラクタにより正常に初期化が行われた)