我有一个基类,它有一个空白列表作为类属性。许多子类继承自这个基类。目的是将此列表类属性与类方法结合使用,以允许每个子类跟踪其自己的特定实例集。每个类都应该有一个单独的列表,其中只包含它自己的实例。
当我对这个继承方案进行简单的实现时,在调试期间我注意到实际上每个子类都与类属性共享完全相同的列表,并且我再次对 python 通过引用传递列表这一事实感到有趣。仔细观察,似乎父类的每个类属性、方法和值都只是通过引用传递给每个子类,并且除非在子类的定义中明确覆盖特定属性,否则这不会改变。
在创建子项时重新初始化子项的类变量的最佳方法是什么?理想情况下,我想要一种方法来确保每个孩子都以 cls.instances 属性开头,该属性是一个唯一的空白列表,其中任何孩子都没有额外的代码。否则,我首先要为继承而烦恼什么?(不要回答)