class MusicPlayer(object):
def __new__(cls, *args, **kwargs):
# 穿件对象时,new 方法会被自动调用
print("创建对象,分配空间")
# 2. 为对象分配空间
isinstance = super().__new__(cls)
# 3. 返回对象的作用
return isinstance
def __init__(self):
print("播放器初始化")
# 创建播放器对象
player = MusicPlayer()
print(player)
class MusucPlayer(object):
# 记录第一个创建对象的引用
isinstance = None
def __new__(cls, *args, **kwargs):
# 判断类属性是否是空对象
if cls.isinstance is None:
# 调用父类方法,为第一个对象分配孔家
cls.isinstance = super().__new__(cls)
# 3.返回类属性保存对象的引用
return cls.isinstance
pass
# 创建多个对象
player1 = MusucPlayer()
print(player1)
player2 = MusucPlayer()
print(player2)
class MusucPlayer(object):
# 记录第一个创建对象的引用
isinstance = None
# 记录是否执行过初始化动作
init_flag = False
def __new__(cls, *args, **kwargs):
# 判断类属性是否是空对象
if cls.isinstance is None:
# 调用父类方法,为第一个对象分配孔家
cls.isinstance = super().__new__(cls)
# 3.返回类属性保存对象的引用
return cls.isinstance
pass
def __init__(self):
# 1.判断是否实在过初始化动作
if MusucPlayer.init_flag:
return
# 2.如果没有只执行多,在执行初始化动作
print("初始化播放器")
# 3.修改类属性的标记
MusucPlayer.init_flag = True
# 创建多个对象
player1 = MusucPlayer()
print(player1)
player2 = MusucPlayer()
print(player2)