スポンサーリンク

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

スポンサーリンク