青海公路建设服务网站,怎么修改网站主页,哪里有做app软件开发,网站宣传平台__new__方法实际上在__init__方法之前执行#xff0c;用于创建类的实例。然而__init__方法负责实例创建后对其进行自定义#xff0c;__new__方法才是实际上创建并返回实例的方法。
__new__方法的第一个也是最重要的参数是创建实例所需的要的类(按照惯例#xff0c;命名为cl…__new__方法实际上在__init__方法之前执行用于创建类的实例。然而__init__方法负责实例创建后对其进行自定义__new__方法才是实际上创建并返回实例的方法。
__new__方法的第一个也是最重要的参数是创建实例所需的要的类(按照惯例命名为cls)。
在大多数起概况下,__new__方法的其他参数会被完整复制到__init__方法中。参数在调用类构造函数时首先会被传递给__new__方法然后再传递给__init__方法。
在实际应用中大多数类无需定义__new__方法。该方法在python中的内置实现已经足够。
通常我们希望__new__方法返回一个已经被初始化后的类的实例。在某些情况下并不需要这么做。需要注意的是只有在通过__new__方法返回当前类的实例时才会执行__init__方法。如果返回的不是当前类的实例就不会调用__init__方法。 class MyClass(object): def __new__(cls,a): print(__new__ 被调用,参数为:%d%a) #在实现__new__方法的时候应该首先调用父类的__new__方法 #然后再开始自定义的逻辑 #调用父类__new__方法创建实例并返回 return object.__new__(cls) def __init__(self,a): print(__init__ 被调用,参数为:%d%a) #解释器先将参数100传递给__new__方法 #如果__new__方法创建对象那么会调用__init__方法 #这时会将参数100再传递给__init__方法 mclass MyClass(100) 总结 __new__至少要有一个参数cls代表要实例化的类此参数在实例化时由Python解释器自动提供 __new__必须要有返回值返回实例化出来的实例这点在自己实现__new__时要特别注意可以return父类__new__出来的实例或者直接是object的__new__出来的实例 __init__有一个参数self就是这个__new__返回的实例__init__在__new__的基础上可以完成一些其它初始化的动作__init__不需要返回值 我们可以将类比作制造商__new__方法就是前期的原材料购买环节__init__方法就是在有原材料的基础上加工初始化商品环节。