在此介绍一下  __init__ 和  __new__ 先后调用的区别 

代码如下:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
# __init__ 和 __new__的区别
# 通常在编代码时,__init__ 较为常见,但是__new__却很少使用。 
# python中,类在实例化时,首先是调用__new__方法,创建出一个实例,然后再去调用__init__ 方法对该实例进行初始化操作。


#!/usr/bin/env python
# -*- coding: utf-8 -*-

class A(object):
    def __init__(self, *args, **kwargs):
        print 'call init'
        return super(A, self).__init__(*args, **kwargs)

    def __new__(cls, *args, **kwargs):
        print 'call new'
        return super(A, cls).__new__(cls, *args, **kwargs)
a = A()

运行结果:

call new
call init

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄