1.__new__()方法的介绍:
1.1作用
__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。
class A(object):
def __init__(self,*args, **kwargs):
print "init A"
def __new__(cls,*args, **kwargs):
print "new A %s"%cls
#return super(A, cls).__new__(cls, *args, **kwargs)
return object.__new__(cls, *args, **kwargs)
1、继承自object的新式类才有__new__,pyhton3里面默认所有类是继承object类的,python2要明确的写出来
2、__new__至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别
3、__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类(通过super(当前类名, cls))__new__出来的实例,或者直接是object的__new__出来的实例
4、__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值
5、如果__new__创建的是当前类的实例,会自动调用__init__函数,通过return语句里面调用的__new__函数的第一个参数是c