Python面试题更新 2026-08-05

在 Python 中,__init__ 方法的作用是什么?请说明其定义、调用时机以及它与构造过程的关系。

技术原理Python

考察说明

考察对 Python 面向对象中初始化方法的理解,包括其作用、调用机制和与构造函数的区别。

回答思路

  1. 【回答框架 1】__init__ 是 Python 类中的实例方法,用于在创建对象后自动调用,目的是初始化实例属性或执行其他初始化逻辑。它的名称前后各有两个下划线,是 Python 的特殊方法之一。
  2. 【回答框架 2】在创建对象时,先调用 __new__ 方法分配内存并返回实例,然后由解释器自动调用 __init__ 对该实例进行初始化。如果自定义 __init__,可接受额外的参数,通常通过类名后括号传入。
  3. 【回答框架 3】值得注意的是,__init__ 不是构造函数,其返回值必须是 None。如果定义了 __new__,一般也需要相应地处理返回的实例。初始化逻辑可包括设置默认值、验证输入参数、建立外部资源连接等。
  4. 【回答框架 4】在继承场景中,若子类重写了 __init__,默认不会自动调用父类的 __init__,需要显式使用 super() 来调用,以确保父类的初始化逻辑执行。
  5. 【回答框架 5】此外,__init__ 是可选的,未定义时,对象创建后没有自定义初始化逻辑,所有实例属性在首次赋值时动态添加。
  6. 【关键点 1】__init__ 在对象创建后自动调用,用于初始化实例属性。
  7. 【关键点 2】__init__ 不是构造函数,真正的构造实际由 __new__ 完成。
  8. 【关键点 3】子类重写 __init__ 时,需显式调用父类 __init__。
  9. 【易错点 1】误将 __init__ 看作构造函数,忽略了 __new__ 的存在。
  10. 【易错点 2】忘记在子类中调用 super().__init__,导致父类初始化缺失。
  11. 【易错点 3】返回非 None 值,引发 TypeError。