在写Python类或者看一些项目的源码的时候,总是看到__init__和__new__方法,并没有深入研究过。区别,今天就来说说这个。__new____new__是一个类方法。创建类的新实例时,会调用__new__,主要控制新实例的创建。您需要知道的是__new__是创建实例的第一步。它首先被调用,它负责返回该类的一个新实例。通常,不必重写__new__,除非您从不可变类型(如str、int、unicode或元组)继承。对于__new__的用法,举个栗子:根据Python官方文档,__new__方法主要是为你在继承一些不可变类(如int、str、tuple)时提供自定义这些类的途径。实例化进程的方式。还有自定义元类的实现。首先,让我们看一下第一个函数。具体来说,我们可以以int为例:如果我们需要一个始终为正的整数类型,通过整合int,我们可能会写出这样的代码。但是运行之后我们会发现结果根本不是我们想的那样,还是-3。这是因为对于int这样的不可变对象,我们只能通过重载它的__new__方法来发挥自定义的作用。下面是修改后的代码:通过重载__new__方法,我们实现了所需的功能。__init____init__是一个实例方法。当类调用__init__时,初始化这个类产生的新实例,初始化的内容就是__init__中定义的内容。每次创建新实例时,实例都会初始化这些内容。这些内容初始化为新创建的实例,与类无关。__init__不返回任何东西。一旦创建了实例,它只负责初始化实例,只有在需要初始化的时候才会调用。参考文档:https://stackoverflow.com/que...https://www.cnblogs.com/shenx...
