__init__和__new__,以及self

__new__:

每次实例化类的时候会默认先执行__new__,进行实例化类。

如果想改变默认__new__行为,可以对它进行自定义,必须有返回实例。

__init__:

对实例化的类进行初始化,必须有一个参数self。

先调用的__new__进行实例化,然后调用__init__对这个实例进行初始化。

self:

指代当前实例化的实例对象本身

self名字不是关键词,可以定义成其他名字,a或者b等都可以,但是约定俗成的用self。

时间: 2024-07-30 13:30:00

__init__和__new__,以及self的相关文章

Python构造器及析构器:__init__与__new__及__del__

__init__与__new__这两个魔法方法组成了Python类对象的构造器,在Python类实例化时,其实最先调用的不是__init__而是__new__.__new__是负责实例化对象的,而__init__是初始化操作.__del__是析构器,当Python对象的所有引用都不存在了(被del了),就会自动触发__del__执行. class CapStr(str): def __new__(cls, string): #此时string = 'i love you' cls是CapStr这

__init__和__new__解释

__init__ 方法通常用在初始化一个类实例的时候使用,但是他并不是初始化类时第一个被调用的方法,第一个被调动的方法是__new__方法. # -*- coding: utf-8 -*- class Person(object): """Silly Person""" def __init__(self, name, age): self.name = name self.age = age def __str__(self): return

Python中__init__和__new__的区别详解

__init__ 方法是什么? 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候.例如: # -*- coding: utf-8 -*- class Person(object): """Silly Person""" def __init__(self, name, age): self.name = name self.age = age def __

__init__和__new__

1 __init__和__new__的区别 1 当创建一个实例的时候会首先调用__new__, 然后在初始化实例的时候会调用__init__. 2 __new__是类级别的方法,__init__是个实例方法. 3 __new__方法会返回一个创建的实例,而__init__不需要有返回值 2 __new__ 实际应用 2.1 在元类中的应用 # 由type创建元类,必须要继承type class MetaClassFoo(type): # 由元类创建类也遵循 名字:继承:方法 def __new_

Python基础(十) __init__与__new__区别

__init__与__new__区别: __init__在python,其实是,在实例化之后执行的,用来初始化一些属性,相当于构造函数,但是又不一样 细心一些,通过参数会有所发现,其实__init__(self)  self隐式的将,实例传过来. __new__在python中其实是,在实例化之前执行的,这个通过参数一样可以看出 __new__(cls),cls是隐式的传递的类对象,并不是实例.因为__new__的任务就是,创建类实例并返回实例. class temp(object): def

__init__、__new__、__call__ 方法

__init__方法 __init__方法负责对象的初始化,系统执行该方法前,其实该对象已经存在了,要不然初始化什么东西呢?先看例子: # class A(object): python2 必须显示地继承objectclass A:    def __init__(self):        print("__init__ ")        super(A, self).__init__()    def __new__(cls):        print("__new_

Python中的__init__和__new__

一.__init__ 方法是什么? 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候.例如: # -*- coding: utf-8 -*- class Person(object): """Silly Person""" def __init__(self, name, age): self.name = name self.age = age def

python中的__init__和__new__的区别

一.__init__ 方法是什么?(init前后的线是双下划线) 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候.例如: 1 # -*- coding: utf-8 -*- 2 3 class Person(object): 4 """Silly Person""" 5 6 def __init__(self, name, age): 7 self.na

__init__和__new__的异同

实例化类的流程: 1.p = Person(name, age)2.首先执行使用name和age参数来执行Person类的__new__方法,这个__new__方法会 返回Person类的一个实例(通常情况下是使用 super(Persion, cls).__new__(cls, - -) 这样的方式),3.然后利用这个实例来调用类的__init__方法,上一步里面__new__产生的实例也就是 __init__里面的的 self所以,__init__ 和 __new__ 最主要的区别在于:1.