Python3.8.5の継承についての質問です。
以下のようなクラスA,Bを作成し、多重継承を行いクラスCを作成しました。
Python
1class A: 2 def A_print(self): 3 print("A") 4 5 6class B: 7 def B_print(self): 8 print("B") 9 10 11class C(A, B): # AとBのメソッドを両方使いたい 12 def inheritance_print(self): 13 super().A_print() 14 super().B_print() 15 16 17foo = C() 18foo.inheritance_print()
しかし、色々調べると多重継承は推奨されていないようです。
多重継承を用いずに別のクラスで2つ以上のクラスのメソッドを使用するにあたり、以下のようにクラスメソッドを用いる方法を考えました。
Python
1class A: 2 @classmethod 3 def A_print(cls): 4 print("A") 5 6 7class B: 8 @classmethod 9 def B_print(cls): 10 print("B") 11 12 13class C(): # AとBのメソッドを両方使いたい 14 def inheritance_print(self): 15 A.A_print() 16 B.B_print() 17 18 19foo = C() 20foo.inheritance_print()
なお、この方法ではA_printおよびB_printをクラスメソッドにしないと動きません。
疑問
多重継承を用いない場合、外部から使用されるメソッドは全てクラスメソッドにしておくべきでしょうか?
それとも他に2つ以上のクラスのメソッドを使用できるスマートな方法があるのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/29 14:54