相変わらず python の話.
python で継承を行った際,
基底クラスがもつ関数と同じ名前の関数を継承したクラスでも定義して,
かつ基底クラスの関数を継承したクラスの同名関数から呼び出すには,という話.
19行目のように,super() を使って呼び出せば意図した挙動になる.
ただし,この書き方が理にかなっているかは未知.
基底クラスを継承したクラスで,基底クラスで実装した処理を実行しつつ
追加処理をしたいと思った時に,オーバライドするのではなく,
基底クラスの実装を活かしつつ実装をしたいと思ったのでやってみた.
1 class Parent(object): 2 def __init__(self): 3 pass 4 5 def __del__(self): 6 pass 7 8 def Print(self): 9 print 'Parent: Hello World' 10 11 class Child(Parent): 12 def __init__(self): 13 pass 14 15 def __del__(self): 16 pass 17 18 def Print(self): 19 super(Child, self).Print() 20 print 'Child: Hello World' 21 22 23 def main(): 24 child = Child() 25 child.Print() 26 27 #------------------------------------------------- 28 if __name__ == "__main__": 29 main()
0 件のコメント:
コメントを投稿