我的想法是任何一个对象都应该存在于 Singleton 类的所有子类中。我一直在尝试的代码和结果矩阵如下所示。在子类的情况下,矩阵似乎工作得很好。我是不是走错路了?它是否了解父类对象和子类对象的情况会发生什么?
class Singleton(object):
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(Singleton, cls).__new__(
cls, *args, **kwargs)
return cls._instance
class A(Singleton):
def __new__(cls, *args, **kwargs):
super(A, cls).__new__(cls, *args, **kwargs)
class B(Singleton):
def __new__(cls, *args, **kwargs):
super(B, cls).__new__(cls, *args, **kwargs)
class C(B):
def __new__(cls, *args, **kwargs):
super(B, cls).__new__(cls, *args, **kwargs)
if __name__ == '__main__':
s1=Singleton()
s2=Singleton()
if(id(s1)==id(s2)):
print "Same"
else:
print "Different"
'''
I got a result matrix for s1 and s2
|************ s2 **************************|
s1 …Run Code Online (Sandbox Code Playgroud)