super()でスーパークラスのコンストラクタをサブクラスから呼び出す
super()を使うことで、スーパークラスのメソッドを呼び出すことができます。
コンストラクタについても同様です。
例えば、下記のようにスーパークラスとコンストラクタを定義します。
class superC:
def __init__(self, num):
self.num1 = num
self.num2 = 3
print("superC", self.num1)
そして、サブクラスを下記のように定義します。
super().__init__(num) でスーパークラスのコンストラクタを呼び出しています。
引数は、selfは必要ないですが、numの引数をセットしないとエラーになります。
class subC(superC): def __init__(self, num): super().__init__(num) def showNum(self): print(self.num1) print(self.num2)
self.num1とself.num2についても値がセットされていて、
サブクラスの他のメソッド showNum()から参照できています。
サンプルコード
下記がサンプルコードになります。
$ cat sample.py
$ cat sample.py
#!/usr/bin/env python3
# coding: UTF-8
class superC:
def __init__(self, num):
self.num1 = num
self.num2 = 3
print("superC", self.num1)
class subC(superC):
def __init__(self, num):
super().__init__(num)
def showNum(self):
print(self.num1)
print(self.num2)
sub = subC(5)
sub.showNum()
下記が実行結果になります。
$ ./sample.py superC 5 5 3
