首页 > 试题广场 >

对于python中__new__和__init__的区别,下

[不定项选择题]
对于python中__new__和__init__的区别,下列说法正确的是?
  • __new__是一个静态方法,而__init__是一个实例方法
  • __new__方法会返回一个创建的实例,而__init__什么都不返回
  • 只有在__new__返回一个cls的实例时,后面的__init__才能被调用
  • 当创建一个新实例时调用__new__,初始化一个实例时用__init__
根据官方文档:

  • __init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
  • __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。

即,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。
编辑于 2018-03-06 17:15:48 回复(5)
根据官方文档:

  • __init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
  • __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。

即,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。
发表于 2019-07-11 13:32:58 回复(0)
  1. __init__ 方法为初始化方法, __new__方法才是真正的构造函数。
  2. __new__方法默认返回实例对象供__init__方法、实例方法使用。
  3. __init__ 方法为初始化方法,为类的实例提供一些属性或完成一些动作。
  4. __new__ 方法创建实例对象供__init__ 方法使用,__init__方法定制实例对象。
  5. __new__是一个静态方法,而__init__是一个实例方法。
发表于 2018-03-08 20:07:45 回复(0)
1、静态方法属于类所有,类实例化前即可使用
2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员
3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存
4、static内部只能出现static变量和其他static方法!而且static方法中还不能使用this等关键字,因为它是属于整个类;
5、静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁;
6、静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
编辑于 2019-04-16 15:53:46 回复(0)
面向对象:
1,首先用__new__创建并返回一个实例对象,此处__new__为静态方法
2,返回的实例对象调用__init__方法进行初始化,初始化不返回任何东西,此处__init__是实例方法
发表于 2018-04-18 19:11:10 回复(0)
转自https://blog.csdn.net/g6485644/article/details/85157913 静态方法与实例方法的区别 1、静态方法属于整个类所有,因此调用它不需要实例化,可以直接调用(类.静态方法())。实例方法必须先实例化,创建一个对象,才能进行调用(对象.实例方法())。 2、静态方法只能访问静态成员,不能访问实例成员;而实例方法可以访问静态成员和实 例成员。 3、在程序运行期间,静态方法是一直存放在内存中,因此调用速度快,但是却占用内存。实例方法是使用完成后由回收机制自动进行回收,下次再使用必须再实例化。 4、一般来说,公共的函数、经常调用的可以写成静态方法,比如数据连接等
编辑于 2019-08-23 09:42:02 回复(0)
abcd
发表于 2018-03-02 12:30:41 回复(0)
1.__new__ 是在__init__之前执行的函数
2.__new__是静态方法,__init__是一个实例方法,用来实例变量,初始化变量的值
3.__new__返回给用户在__init__中创建的实例变量,因为__new__先执行,可以理解成__new__才是真正意义上的构造函数
发表于 2022-04-21 11:39:15 回复(0)

_init_是对实例赋值所以是实例方法

_new_是在实例创建前调用并返回一个实例 是静态方法

静态方法属于类

1.直接由类调用

2.不能在其方法中调用非静态成员或方法

3.静态方法加载类时变创建 不需要创建实例对象在创建

4.一个静态对象共同一块内存 而实例对象则不共用

静态效率高但是不能自动销毁 实例效率低但能销毁

编辑于 2019-12-30 22:30:01 回复(0)
只有在__new__返回一个cls的实例时,后面的__init__才能被调用

如果没有__new__函数,__init__函数也可以被调用啊

发表于 2019-06-29 15:58:45 回复(2)
__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数
发表于 2024-03-13 12:33:15 回复(0)
  •     __init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
  • __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。

即,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。
发表于 2023-10-31 17:37:18 回复(0)
第一个参数cls不应该是类方法吗,静态方法一般不带参数?
发表于 2023-09-15 01:00:03 回复(0)
6
发表于 2023-06-14 23:16:24 回复(0)
__new__返回一个类型的实例时,后面_int_才能被调用 当创建一个新实例对象时调用__new__,初始化一个实例时调用_init__
发表于 2022-12-17 16:10:21 回复(0)
记录
发表于 2022-11-22 21:06:18 回复(0)
new是在创建实例前被调用,所以实在init之前。
发表于 2022-07-28 14:57:36 回复(0)
绕晕了
发表于 2021-04-28 19:44:28 回复(0)
New不算静态方法,是类方法,A怎么应该是错的
发表于 2021-04-18 22:32:33 回复(0)