码迷,mamicode.com
首页 > 其他好文 > 详细

__new__与__init__的区别

时间:2019-12-15 00:57:04      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:初始   print   oca   size   完成   实例化   打印   use   invoke   

__new__  : 控制对象的实例化过程 , 在__init__方法之前调用

__init__ : 对象实例化对象进行属性设置

 

class User:
    def __new__(cls, *args, **kwargs):
        """控制对象的创建的过程,在__init__方法之前调用"""
        print(invoke __new__)
        return super().__new__(cls)  # 需要返回cls, 不然是不会调用__init__方法

    def __init__(self, name):
        """控制对象的属性操作,在调用该方法时,对象已经初始化完成,只是属性还没完善"""
        print(invoke __init__)
        self.name = name


if __name__ == __main__:
    user = User(admin)

 

打印结果:

C:\Users\zhengqinfeng\AppData\Local\Programs\Python\Python37\python.exe E:/ws/python/LearnFlask/test/mooic/new_init.py
invoke __new__
invoke __init__

Process finished with exit code 0

__new__与__init__的区别

标签:初始   print   oca   size   完成   实例化   打印   use   invoke   

原文地址:https://www.cnblogs.com/z-qinfeng/p/12041594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!