关于python:在类的实例化过程中,如何检查该类的对象是否已经存在,如果已经存在,则指向已经存在的对象?

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?

本问题已经有最佳答案,请猛点这里访问。

我在一次采访中被问到这个问题。我想做的是:

1
2
3
4
5
6
7
8
9
10
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中的对象(第一个创建的对象)。


您希望实现类似singleton的东西。最简单的方法是覆盖__new__,而不是覆盖__init__