__new__()用于创建实例,而__init__()则负责初始化实例
__new__方法:类级别的方法 、 __init__方法:实例级别的方法
1、__new__ 至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别
2、__new__ 必须要有返回值,返回实例化出来的实例,可以return 父类__new__出来的实例 或者直接是object的__new__出来的实例
3、__int__ 有一个参数self,就是这个__new__返回的实例, __init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值
4、如果__new__创建的是当前类的实例,会自动调用init函数通过return调用的__new__函数的第一个参数cls来保证是当前类实例;如果是其它类的类名实际创建返回的也是其他类的实例,不会调用当前类的__init__,也不会调用其他类的__init__
class object:
def __init__(self): # known special case of object.__init__
""" Initialize self. See help(type(self)) for accurate signature. """
pass
@staticmethod # known case of __new__
def __new__(cls, *more): # known special case of object.__new__
""" Create and return a new object. See help(type) for