__new__()
方法是一种负责创建 类实例 的 静态方法
1、Python 中的构造方法 __init__()
负责将类实例化,而在 __init__()
执行之前,__new__()
负责制造这样的一个实例对象,以便 __init__()
去让该实例对象更加的丰富
# 创建一个音乐播放器类
class MusicPlayer:
"""
当调用new方法之后,需要在当前new方法中调用父类new方法
object
父类new方法已经实现了划分内存地址的代码
在内存中并没有划分空间给当前类
"""
# 重写new方法,为对象分配空间
def __new__(cls, *args, **kwargs):
print("创建对象,分配空间")
# 使用super继承object对象的方法
instance = super().__new__(cls)
return instance
def __init__(self):
print("音乐播放器初始化")
# 创建对象
player = MusicPlayer() # 创建对象,分配空间 音乐播放器初始化
# 打印对象地址
print(player) # 输出具体的对象地址
2、__new__()
方法还决定是否要使用该 __init__()
方法
# 创建一个音乐播放器类
class MusicPlayer:
"""
当调用new方法之后,需要在当前new方法中调用父类new方法
object
父类new方法已经实现了划分内存地址的代码
在内存中并没有划分空间给当前类
"""
# 重写new方法,为对象分配空间
def __new__(cls, *args, **kwargs):
print("创建对象,分配空间")
# # 使用super继承object对象的方法
# instance = super().__new__(cls)
# return instance
def __init__(self):
print("音乐播放器初始化")
# 创建对象
player = MusicPlayer() # 创建对象,分配空间
# 打印对象地址
print(player) # None