コンストラクタの定義方法(引数なし)
class TestClass:
def __init__(self):
# ここにコンストラクタの処理を記述
サンプルコード
# クラスの定義
class TestClass:
def __init__(self):
print('コンストラクタ実行')
# クラスのインスタンス生成
test = TestClass()
- 3行目 コンストラクタを定義しています。
- 7行目 class を new しています。このタイミングで 'コンストラクタ実行' が出力されます。

コンストラクタの定義方法(引数あり)
class TestClass:
def __init__(self, arg1, arg2):
# ここにコンストラクタの処理を記述
self.arg1 = arg1
self.arg2 = arg2
# クラスの定義
class TestClass:
def __init__(self, message):
self.message = message
def print(self):
print(self.message)
# クラスのインスタンス生成
test = TestClass('初期化メッセージ')
# メソッド実行
test.print()
- 3行目 引数「message」のあるコンストラクタを定義しています。
- 4行目 引数「message」の値をメンバ変数に保持しています。
- 10行目 引数に '初期化メッセージ' を渡し、 class を new しています。
- 13行目 '初期化メッセージ' が出力されます。

クラスを継承した場合の挙動
基底クラス | 派生クラス | 呼ばれるコンストラクタ |
---|---|---|
あり | なし | 基底クラスのコンストラクタ |
なし | あり | 派生クラスのコンストラクタ |
あり | あり | 派生クラスのコンストラクタのみ |
基底クラスのコンストラクタを呼ぶ方法
# 派生クラスの定義
class SubClass(BaseClass):
def __init__(self):
# 基底クラスのコンストラクタを呼ぶ
super().__init__()
サンプルコード
# 基底クラスの定義
class BaseClass:
def __init__(self):
print('基底クラスのコンストラクタ実行')
# 派生クラスの定義
class SubClass(BaseClass):
def __init__(self):
# 基底クラスのコンストラクタを呼ぶ
super().__init__()
print('派生クラスのコンストラクタ実行')
# 派生クラスのインスタンス生成
test = SubClass()
- 11行目 基底クラスのコンストラクタを実行しています。
- 16行目 派生クラス を new しています。このタイミングで '基底クラスのコンストラクタ実行' と '派生クラスのコンストラクタ実行' が出力されます。

検証環境
- Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
- Microsoft Windows 10 Pro Version 20H2 OS Build 19042.870 Experience: Windows Feature Experience Pack 120.2212.551.0