在类的实例化期间如何检查该类的对象是不是已经存在,如果存在,则指向已经存在的对象? [复制]

Posted

技术标签:

【中文标题】在类的实例化期间如何检查该类的对象是不是已经存在,如果存在,则指向已经存在的对象? [复制]【英文标题】:During instantiation of a class how to check if an object of that class already exists and if it does, point to the already existing object? [duplicate]在类的实例化期间如何检查该类的对象是否已经存在,如果存在,则指向已经存在的对象? [复制] 【发布时间】:2019-03-28 21:52:45 【问题描述】:

我在一次采访中被问到这个问题。我尝试做的事情如下:

class A:
    l = []
    def __init__(self):
        if len(A.l)==0:
            A.l.append(self)
        else:
            return A.l[0]

a = A()
b = A()

我回到家并运行了这段代码,发现它不起作用。

所以我想知道解决这个问题的正确方法是什么。预期的结果是,当第二次调用A() 时,b 应该指向已经存储在a 中的对象(第一次创建的对象)。

【问题讨论】:

以防万一有人想知道,我没有得到这份工作。 很难过 :( 无论如何市场上有很多鱼(我的意思是工作)。 【参考方案1】:

你想实现像 Singleton 这样的东西。最简单的方法是覆盖 __new__ 而不是 __init__

【讨论】:

以上是关于在类的实例化期间如何检查该类的对象是不是已经存在,如果存在,则指向已经存在的对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C++只能实例化1个对象的类

JAVA基础面向对象,心得总结《三》

(JAVA)啥是实例化如何实现类的实例化(用类或方法创建一个该类的实例)?

Java静态方法,静态变量,初始化顺序

单例模式(Singleton)

PHP能在类中实例化一个类吗