python の多重継承 super を使ったコンストラクタへの引数渡し
2023-08-13 09:54:24
質問
次のようなpythonのコードの断片を考えてみましょう。
class A(object):
def __init__(self, a):
self.a = a
class B(A):
def __init__(self, a, b):
super(B, self).__init__(a)
self.b = b
class C(A):
def __init__(self, a, c):
super(C, self).__init__(a)
self.c = c
class D(B, C):
def __init__(self, a, b, c, d):
#super(D,self).__init__(a, b, c) ???
self.d = d
私は、どのようにすれば
a
,
b
と
c
を対応する基底クラスのコンストラクタに追加します。
どのように解決するのですか?
さて、一般に多重継承を扱う場合、ベースクラスは(残念ながら)
多重継承のために設計された
. クラス
B
と
C
を適用する適切な方法を見つけられませんでした。
super
で
D
.
多重継承のための基底クラスを設計する一般的な方法の1つは、中間レベルの基底クラスがその
__init__
メソッドで余分な引数を受け取り、その引数を
super
の呼び出しに渡します。
pythonで行う方法の一つを紹介します。
class A(object):
def __init__(self,a):
self.a=a
class B(A):
def __init__(self,b,**kw):
self.b=b
super(B,self).__init__(**kw)
class C(A):
def __init__(self,c,**kw):
self.c=c
super(C,self).__init__(**kw)
class D(B,C):
def __init__(self,a,b,c,d):
super(D,self).__init__(a=a,b=b,c=c)
self.d=d
これは残念なことだとも捉えられるが、それはそれで仕方がない。
関連
-
[解決済み] 変数を参照渡しする方法を教えてください。
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] Pythonのsuper()は多重継承でどう動くのか?
-
[解決済み] Pythonで'super'は何をするのですか?- super().__init__() と明示的なスーパークラス __init__() の違い
-
[解決済み】Pythonで複数のコンストラクタを持つためのクリーンでPythonicな方法は何ですか?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのsuper()は多重継承でどう動くのか?
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?