元类中__new__ 与 __init__的区别--day27

__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 res

def __init__(self,class_name,bases,namespace):
print("init run")
print(self)


class Student(metaclass=MyMeta):
pass

print(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 res

def __init__(self,class_name,bases,namespace):
print("init run")
print(self)


class Student(metaclass=MyMeta):
pass

print(Student)

posted @ 2018-12-20 15:17  WenChen-0o0  阅读(228)  评论(0编辑  收藏  举报