CodeWalk

__new__ 和 __init__ 的区别

作者:编译有声 · 2026-05-30 12:55

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 的子类)。