こんにちは。
pythonのクラス継承についてわからない事があるのですが、
基本的に基底クラスを引き継いだクラスというのは基底クラスのメソッドや変数も引き継ぐという認識をしているのですが、
なぜpythonでは継承をする際に、わざわざsuper()をして基底クラスの変数の初期化や、メソッド(__init__など)を実行するのでしょうか?
例えば以下のサイトのソースを参考にしたのですが、
結果はどちらも"Pochi"になります。
https://www.lifewithpython.com/2014/01/python-super-function.html
super()を使う場合
python
1class Dog(): 2 3 def __init__( self, name ): 4 self.name = name 5 6class UltraDog( Dog ): 7 8 def __init__( self, name, type ): 9 super( UltraDog, self ).__init__( name ) 10 self.type = type 11 12d = UltraDog( 'Pochi', 'Shiba' ) 13print( d.name ) 14# 結果 => Pochi
super()を使わない場合
python
1class Dog(): 2 3 def __init__( self, name ): 4 self.name = name 5 6class UltraDog( Dog ): 7 8 def __init__( self, name, type ): 9 self.name = name 10 self.type = type 11 12d = UltraDog( 'Pochi', 'Shiba' ) 13print( d.name ) 14# 結果 => Pochi

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/11 02:46
2020/01/11 03:10 編集
2020/01/11 03:30