zoukankan      html  css  js  c++  java
  • __new__与__init__

    1.构造方法包括创建对象和初始化对象,在python当中,分为两步执行:先执行__new__方法,然后执行__init__方法;
    2.__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
    3.__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。
    总结:也就是,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。

    例如:

    class A:

        def __init__(self):

            print(self)

            print("self id :",id(self))

            print("in __init__")

        def __new__(cls, *args, **kwargs):

            print("cls id",id(cls))

            print("in __new__")

            ret = object.__new__(cls)

            print(ret)

            print("ret id: ",id(ret))

            return ret

    print("A id",id(A))

    aa = A()

    结果:

    A id 2325495978840

    cls id 2325495978840

    in __new__

    <__main__.A object at 0x0000021D726FCA20>

    ret id:  2325497236000

    <__main__.A object at 0x0000021D726FCA20>

    self id : 2325497236000

    in __init__

  • 相关阅读:
    51Nod1740 蜂巢迷宫
    51Nod1279 扔盘子
    51Nod1095 Anigram单词
    51Nod1094 和为k的连续区间
    51Nod1072 威佐夫游戏
    PHP 图片处理
    ubuntu 安装 ftp
    linux下ab网站压力测试命令
    iptables FOr linux
    discuz 个性化时间函数
  • 原文地址:https://www.cnblogs.com/wenshu/p/12323885.html
Copyright © 2011-2022 走看看