super() 親クラスのプロキシ

最終更新:2026-09-22

super() 親クラスのプロキシ

super() は親クラスのプロキシオブジェクトを返します;サブクラスのメソッド内で親クラスの実装を呼び出せます。

カテゴリ組み込み関数
種類組み込み関数
Python バージョンall

📝 構文

super([type[, object-or-type]])

⚙️ 引数

type 任意The class; the zero-arg form infers it.(デフォルト値:None)
obj 任意An instance or class for MRO resolution.(デフォルト値:None)

戻り値:A proxy to the next class in the MRO; methods can be called through it.

💥 例外

▶ 例

下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:

実行結果:

A.hello
B.hello
さらに多くのケースは近日公開予定です。

❓ よくある質問

Qsuper() は何をするもの?
Aサブクラスのメソッド内で親クラスの同名実装を呼び出します。super().hello() は MRO の「次のクラス」の hello メソッドを探して呼び出します。
Qsuper() はなぜクラスのメソッド内で呼ぶ必要があるの?
A引数なしの形式は「現在のクラス+現在のインスタンス」を自動で推論します。クラス外(普通の関数内など)で呼ぶと RuntimeError: super(): no arguments になります。
Qsuper().__init__() を書く必要があるのはどんなとき?
Aサブクラスが __init__ をオーバーライドしつつ、親クラスにも初期化を実行させたいときです。書かないと親の __init__ は実行されません(親が object の場合を除く)。
Qsuper() は多重継承でどの順に親クラスを探しますか?
AMRO(メソッド解決順序)に従います。super() は「直接の親」ではなく「MRO の次のクラス」なので、多重継承ではダイヤモンド継承を正しく処理し、親が二重に呼ばれるのを防ぎます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%