Python3__new__方法创建单例对象
1) 单例对象:即一个类,无论创建多少次对象,都只有一个对象,是同一个对象的引用。
2) 代码示例:
class Dog(object):
__instance = None #定义一个参数用来判断是否为第一次创建对象
def __new__(cls):
if cls.__instance == None: #判断是否为第一次创建对象
cls.__instance = object.__new__(cls) #使用参数保存新创建对象的引用
return cls.__instance #返回对象的引用
else:
#如果不是第一次创建对象,则return 上一次创建的对象的引用
return cls.__instance
a = Dog()
print(id(a))
b = Dog()
print(id(b))
运行结果:
140257904889752
140257904889752
两次创建的对象地址相同,即只是将第一次创建对象的引用传递给b
,并没有创建新的对象。