[解決済み] ベース(スーパー)クラスを初期化する方法を教えてください。
2022-05-03 16:27:27
質問
Pythonで、以下のようなコードがあるとします。
class SuperClass(object):
def __init__(self, x):
self.x = x
class SubClass(SuperClass):
def __init__(self, y):
self.y = y
# how do I initialize the SuperClass __init__ here?
を初期化するにはどうすればよいのでしょうか?
SuperClass __init__
をサブクラスで使用することはできますか?私はPythonのチュートリアルに沿っていますが、それはカバーされていません。Googleで検索すると、複数のやり方が見つかりました。これを処理する標準的な方法は何ですか?
どのように解決するのですか?
Pythonは(バージョン3まで)"old-style"とnew-styleのクラスをサポートしています。新スタイルのクラスは
object
で、あなたが使っているもので、そのベースクラスを
super()
は、例えば
class X(object):
def __init__(self, x):
pass
def doit(self, bar):
pass
class Y(X):
def __init__(self):
super(Y, self).__init__(123)
def doit(self, foo):
return super(Y, self).doit(foo)
pythonは古いスタイルのクラスと新しいスタイルのクラスについて知っているので、ベースメソッドを呼び出す方法が複数あります。
完全を期すために、旧式のクラスは基底クラスを使用して明示的に基底メソッドを呼び出す、すなわち
def doit(self, foo):
return X.doit(self, foo)
でも、もう旧式は使わないはずなので、あまり気にすることはないでしょう。
Python 3は新スタイルのクラスしか知らないので、(
object
を使用します)。
関連
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
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 カメの描画コマンドとその例
-
PythonはWordの読み書きの変更操作を実装している
-
Python百行で韓服サークルの画像クロールを実現する
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない