クラス属性として空のリストを持つ基本クラスがあります。多くの子クラスは、この基本クラスから継承します。その意図は、このリスト クラス属性をクラス メソッドと組み合わせて使用して、各子クラスが独自のインスタンスの特定のセットを追跡できるようにすることです。各クラスには、独自のインスタンスのみを含む個別のリストがあるはずです。
この継承スキームの単純な実装を作成したとき、デバッグ中に、実際にはすべての子クラスがクラス属性とまったく同じリストを共有していることに気付き、Python が参照によってリストを渡すという事実をもう一度楽しんでいました。よく調べてみると、親のすべてのクラス属性、メソッド、および値は、参照によってすべての子に渡されるだけであり、特定の属性が子の定義で明示的にオーバーライドされない限り、これは変更されないようです。
作成時に子のクラス変数を再初期化する最良の方法は何ですか? 理想的には、すべての子が cls.instances 属性で始まることを保証する方法が必要です。これは、どの子にも余分なコードを含まない一意の空のリストです。そうでなければ、そもそも何のために継承に悩まされているのでしょうか? (それには答えないでください)