python
1class A(object): 2 3 def primary_process(self): 4 print('A') 5 6 def say_this_func_name(self): 7 pass 8 9class B(A): 10 11 def first_process(self): 12 super().primary_process(self) 13 14 def say_this_func_name(self): 15 print('B') 16 17class C(A): 18 19 def first_process(self): 20 super().primary_process(self) 21 22 def say_this_func_name(self): 23 print('C') 24 25class D(B, C): 26 27 def __init__(self): 28 super().first_process() 29 30 def say_B(self): 31 super().say_this_func_name() 32 33 def say_C(self): 34 super().say_this_func_name() 35 36b = D() 37b.say_B() 38 39c = D() 40c.say_C()
A
B
A
C
と出力してほしいのですが、どうすればいいでしょうか。
引数を増やすなどの対応でも構いません。
ポイントは2点あります。
- 菱形継承をしているが片方の関数しか呼ばない
first_processはB, C両方に定義されていますが、
どちらでもいいのでどちらか片方だけ発火してほしいです。
- どちらから継承されているかを明示的に指定する
上記のプログラム内ではクラスD内においてsuper().say_this_func_name()とだけしていますが、
明示的にB側のものかC側のものを使用したいです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/28 11:08