目的:让类创建对象,在系统中只有唯一的一个实例。
每一次执行类名()返回的对象,内存地址是相同的
需要重写new内置方法,一定要返回return supper().new(cls)
new 为对象分配空间,返回对象的引用
init对象初始化,定义实例属性
class MusicPlayer(object):
def __new__(cls, *args, **kwargs):
# 1. 创建对象时,new 方法会被自动调用
print('创建对象, 分配空间')
# 2. 为对象分配空间
instance = super().__new__(cls)
# 3. 返回对象的引用
return instance
def __init__(self):
print('播放器初始化')
player = MusicPlayer()
print(player)
创建对象, 分配空间
播放器初始化
__main__.MusicPlayer object at 0x0000000001E1E828