代码在下面:
class A(object):
__instance = None
def __new__(cls, *args, **kwargs):
if cls.__instance is None:
cls.__instance = object.__new__(cls)
return cls.__instance
else:
return cls.__instance
def __init__(self, book):
self.book = book
def pr(self):
print(self.book)
if __name__ == "__main__":
b = A("wind")
a = A("good")
print(a is b)
print(a.pr())
print(b.pr())
结果是
True good None good None为什么结果不是:
True wind good
代码哪里出问题了?
答案 0 :(得分:2)
每次调用A()
时,都会调用其__init__
,因为它是一个单例,因此在同一对象上两次调用__init__()
方法。
您可以通过以下方式获得预期的结果:
b = A("wind")
b.pr()
a = A("good")
a.pr()
print(a is b)