__new__ 与 __init__的区别
"""new 与 init的区__new__ 比__init__先执行 其作用是创建一个空的类对象作为一个类对象 必须具备是三个组成部分 所以调用type中的__new__来完成组装 得到这个类对象后需要将其返回 以供__init__来使用"""
class MyMeta(type):# 用于新建类对象
def __new__(cls, *args, **kwargs): print("new run") # print(MyMeta) # print(*args)# 调用type通过的__new__方法来创建一个空的类对象 已经将三个组成部分都放到类对象中了
res = type.__new__(cls,*args) return resdef __init__(self,class_name,bases,namespace):
print("init run") print(self) class Student(metaclass=MyMeta): passprint(Student)
__new__ 与 __init__的区
"""new 与 init的区__new__ 比__init__先执行 其作用是创建一个空的类对象作为一个类对象 必须具备是三个组成部分 所以调用type中的__new__来完成组装 得到这个类对象后需要将其返回 以供__init__来使用"""
class MyMeta(type):# 用于新建类对象
def __new__(cls, *args, **kwargs): print("new run") # print(MyMeta) # print(*args)# 调用type通过的__new__方法来创建一个空的类对象 已经将三个组成部分都放到类对象中了
res = type.__new__(cls,*args) return resdef __init__(self,class_name,bases,namespace):
print("init run") print(self) class Student(metaclass=MyMeta): passprint(Student)