mthoutai

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

__init__()和__new__()

1.1 __init__():初始化对象

class Test(object):
    def __init__(self):
        print("这是__init__")
te = Test()

1.2__new__() : object基类提供的内置的静态方法
作用: 1.在内存中为对象分配空间  2.返回对象的引用

class Test(object):
    def __init__(self):
        print("这是__init__")
    def __new__(cls, *args, **kwargs):  #代表类本身
        print("这是__new__")
        res = super().__new__(cls)    #方法重写,复用object中的__new__()方法res里面保存的是实例对象的引用,__new__()是静态方法,形参里面有cls,实参就必须传
        return res
    #注意:重写__new__()一定要return super().__new__(cls),否则python解释器得不到分配空间的对象引用,就不会调用__init__()
te = Test()
print("te:",te)

执行步骤:
一个对象的实例化过程:首先执行__new__(),如果没有重写__new__(),则默认调用object里面的__new__(),返回一个实例对象,
然后再去调用__init__(),对对象进行初始化

class Person(object):
    def __new__(cls, *args, **kwargs):
        res = super().__new__(cls)
        print("返回值:",res)
        return res
    def __init__(self,name):
        self.name = name #实例化属性
        print(f"名字叫{self.nam
posted on 2025-11-08 14:09  mthoutai  阅读(5)  评论(0)    收藏  举报