代码之家  ›  专栏  ›  技术社区  ›  badcoder123

如何跟踪类的旧属性,并将它们分配给所有新实例

  •  0
  • badcoder123  · 技术社区  · 2 年前

    我已经在一个个人项目上工作了很长一段时间,但我发现自己陷入了一个特殊的问题:我只希望类的第一个实例为其定义属性 该类的未来实例。但是,我不想将其存储在代码之外的全局变量中,因为它会妨碍其他内容。我该怎么做? 我现在想到的(并实现了)是有一个计数器来检查这是否是类的第一个实例,但是我在哪里可以存储这个值? 谢谢

    1 回复  |  直到 2 年前
        1
  •  0
  •   ItzTheDodo    2 年前

    这听起来像是在问单身人士。这些类是将对象初始化次数限制为1的对象。每隔一次调用都会返回相同的对象。

    要创建单例,只需编辑_new __函数并更改其运行方式。

    class SingletonClass(object):
      def __new__(cls):
        if not hasattr(cls, 'instance'):
          cls.instance = super(SingletonClass, cls).__new__(cls)
        return cls.instance
       
    class SingletonChild(SingletonClass):
        pass
    

    编辑:更好的例子