博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
元类中__new__ 与 __init__的区别--day27
阅读量:5351 次
发布时间:2019-06-15

本文共 1016 字,大约阅读时间需要 3 分钟。

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

转载于:https://www.cnblogs.com/wenchen/p/10149551.html

你可能感兴趣的文章
Python之旅Day14 JQuery部分
查看>>
core--线程池
查看>>
redux-effect
查看>>
Android轻量级的开源缓存框架ASimpleCache
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
linux下编译复数类型引发的错误:expected unqualified-id before '(' token
查看>>
codeforces 1041A Heist
查看>>
Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
查看>>
bzoj1048 [HAOI2007]分割矩阵
查看>>
Java中的编码
查看>>
PKUWC2018 5/6
查看>>
As-If-Serial 理解
查看>>
洛谷P1005 矩阵取数游戏
查看>>
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
查看>>
无线通信基础(一):无线网络演进
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
linux清空日志文件内容 (转)
查看>>
Servlet接收JSP参数乱码问题解决办法
查看>>
Ajax : load()
查看>>