12. __init__() 和__new__

1.__init__(): 给初始化对象   给属性对象赋值

会自动调用__init__()方法  例子

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

1.2 __new__(): object基类提供内置的静态方法

作用:1.在内存中为对象分配空间

          2.返回对象的引用

class Test(object):
    def __init__(self):
        print("这是__init__()")
        #print(self)
    def __new__(cls):
        print("这是new")
        print(cls)
        res=super().__new__(cls) # 对父类方法进行扩展  super().方法名()
        return res #方法重写,res保存的是实例对象的引用
    #重写__new__()一定要return super().__new__(cls),
    #否则python解释器得不到分配空间的对象引用,就不会调用__init__()
te = Test()
print("te:",te)
class Person(object):
    def __new__(cls):
        print("这是new"方法)
        return super().__new__(cls) # 对父类方法进行扩展  super().方法名()
    def __init__(self,name):
        self.name = name #实例属性
        print("名字是:",self.name)
pe = Person("xiaolan")
print(pe)
        

区别:

1.__new__()是创建对象,__init__()是初始化对象

2.__new__()是返回对象引用,__init__()是实例属性

3.__new__()是类级别方法,__init__()是实例级别的方法

     

posted on 2026-02-05 00:01  梨花苗  阅读(9)  评论(0)    收藏  举报