以下のように定義されている、ライブラリのクラスがあるとします。
somethingメソッドの中では、クラスの外に定義されたグローバル変数GLOBAL_ARGを使って様々な処理を行っているとします。
parent.py
1GLOBAL_ARG = 略 2 3class Parent(): 4 def something(self): 5 # GLOBAL_ARGを使った様々な長めの処理
このとき上記Parentクラスのsomethingメソッド内の処理内容は同じで、GLOBAL_ARGの値だけ変えたいとします。
このようなときに、たとえ処理内容は同じでも、以下のようにParentクラスのsomethingメソッドをコピペしてオーバライドするしかないのでしょうか?
chid.py
1GLOBAL_ARG = 略(ただしparent.pyに記載のものとは異なる値) 2 3from parent import Parent 4 5class Child(Parent): 6 '''Parentクラスのsomethingメソッドをオーバーライド''' 7 def something(self): 8 # parent.pyに記載のものをすべてコピペ
ちなみに(当然ですが)、super().sometihng()でParentクラスのsomethingメソッドを呼び出すと、ParentクラスのGLOBAL_ARGが使われるようです。
chid.py
1GLOBAL_ARG = 略(ただしparent.pyに記載のものとは異なる値) 2 3from parent import Parent 4 5class Child(Parent): 6 '''Parentクラスのsomethingメソッドをオーバーライド''' 7 def something(self): 8 super().something()
回答2件
あなたの回答
tips
プレビュー