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

代码如下:

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