单例模式:确保一个类只有一个实例,并且提供一个访问它的全局方法
class Singleton(object):
__instance =None
__isFirstInit = False\
def __new__(cls, name):
if not cls.__instance:
Singleton.__instance = super().__new__(cls)
return cls.__instance
def __init__(self,name):
if not self.__isFirstInit:
self.__name = name
Singleton.__isFirstInit = True;
def getName(self):
return self.__name
def Test():
tom = Singleton("Tom")
kate = Singleton("Kate")
print(tom.getName())
print(kate.getName())
print("id(tom)",id(tom))
print("id(kate)", id(kate))
Test()
运行结果:
Tom
Tom
id(tom) 900466049280
id(kate) 900466049280
__new __负责创建对象, __init __负责对象的初始化
__new __是类的方法,通过类名实例化对象的时候自动调用, 创建一个实例后返回这个实例对象,并且将其传递给__init __ 方法中的self参数。 __init __ 是对象方法,在每一次实例化对象之后调用。
aaa