__new__ 和 __init__ 的区别
Python 中 __new__ 和 __init__ 方法有什么区别?对象创建的过程是怎样的?
回答
编译有声
__new__(cls, ...):静态方法,负责创建并返回实例对象,是对象创建的第一步__init__(self, ...):实例方法,负责初始化实例,在__new__之后调用
class MyClass:
def __new__(cls, *args, **kwargs):
print('Creating instance')
instance = super().__new__(cls)
return instance
def __init__(self, value):
print('Initializing instance')
self.value = value
执行顺序:__new__ -> __init__。
常见用途:__new__ 用于单例模式、不可变类型子类(int/str/tuple 的子类)。