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__()是实例级别的方法
浙公网安备 33010602011771号