Python多重継承したクラスの初期化
super().init() で初期化する方法。
サンプルプログラム
# Description: 多重継承
class math(object):
"""足し算クラス
:param object: objectクラス
"""
def __init__( self , val1 =1 , val2 = 1):
"""初期化
:param val1: 数値1
:param val2: 数値2
"""
self.val1 = val1
self.val2 = val2
print( "足し算 val1:" + str(self.val1) + "val2:" + str(self.val2) )
def calc( self ):
"""計算
:return: 足し算結果
"""
return self.val1 + self.val2
class sub(object):
"""引き算クラス
:param object: objectクラス
"""
def __init__( self , val1 =1 , val2 = 1):
"""初期化
:param val1: 数値1
:param val2: 数値2
"""
self.val1 = val1
self.val2 = val2
print( "引き算 val1:" + str(self.val1) + "val2:" + str(self.val2) )
def calc( self ):
"""計算
:return: 引き算結果
"""
return self.val1 - self.val2
class calcuration( math , sub ):
"""多重継承
:param math: mathクラス
:param sub: subクラス
"""
def __init__( self , val1 =2 , val2 = 2):
"""初期化
:param val1: 数値1
:param val2: 数値2
super().__init__()で初期化
"""
super().__init__(val1,val2)
print( "計算 val1:" + str(self.val1) + "val2:" + str(self.val2) )
# 計算
calc = calcuration()
print( calc.calc())
このプログラムを単体で動かすと
多重継承するクラス時に列挙されているクラスのうちの最も左に記述されているクラスで初期化が行われる
実行結果
計算 val1:2val2:2
4