21 lines
802 B
Python
21 lines
802 B
Python
|
# 也就是说,先创建一个实例对象,之后不管创建多少个,返回的永远都是第一个实例对象的内存地址。可以这样实现:
|
|||
|
|
|||
|
# 重写new方法很固定,返回值必须是这个
|
|||
|
# 这样就避免了创建多份。
|
|||
|
# 创建第一个实例的时候,_instance是None,那么会分配空间创建实例。
|
|||
|
# 此时的类属性已经被修改,_instance不再为None
|
|||
|
# 那么当之后实例属性被创建的时候,由于_instance不为None。
|
|||
|
# 则返回第一个实例对象的引用,即内存地址。
|
|||
|
# 这样就应用了单例模式。
|
|||
|
class A():
|
|||
|
_instance = None
|
|||
|
def __new__(cls,*args,**kwargs):
|
|||
|
if A._instance == None:
|
|||
|
A._instance = super().__new__(cls)
|
|||
|
return A._instance
|
|||
|
|
|||
|
|
|||
|
a1 = A()
|
|||
|
print(id(a1))
|
|||
|
a2 = A()
|
|||
|
print(id(a2))
|