スポンサーリンク
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
スポンサーリンク