1
私はfooクラスの派生クラスが多く、派生クラスの1つに基本クラスのオブジェクトをインスタンス化しようとしています。基本クラスのコンストラクタを一度だけ呼びたいと思います。私は以下のコードを実行しようとしていながら 私はランタイムエラーを取得しています:実行時エラー:RecursionError:Pythonオブジェクトを呼び出すときに最大再帰深度を超過しました
class foo():
call_once = True
_Bar = None
_BaseClass = None
def __init__(self):
if (self.call_once):
self.call_once = False
self._Bar = bar()
self._BaseClass = _bar
class bar(foo):
def __init__(self):
foo.__init__(self)
bar1 = bar()
これは意味をなさない。 'foo'インスタンスを初期化していない点は何ですか?なぜ最初のものが特別なのですか?あなたがしていることは何でも、私はそれを行うより良い方法があることを保証します。 –
より良い方法をお勧めします。私は何をしようとしているのかという質問を書いた。 –
したがって 'foo()'は 'bar'型のオブジェクトをインスタンス化します。しかし、 'bar()'は 'foo()'の '__init__'メソッドを呼び出し、' foo() 'は' bar'型のオブジェクトをインスタンス化します。この結果、無限ループになります。再帰は 'if'ブロック内で行われるため、' if'文はここでは役に立ちません。 – MaxPowers