代码点读机 / Python / __init__

__init__ Python · 常用约定

`__init__` 是类的构造函数,当你创建一个对象时,Python 自动调用它来初始化属性。就像新生儿出生时,医生立刻给他量体重、登记名字。每个对象出生时都要经过这一步,把初始数据填好。

怎么用

在类中定义 `def __init__(self, 参数...):`,在里面给 `self.属性` 赋值。

小例子

class 猫:
    def __init__(self, 名字, 年龄):
        self.名字 = 名字
        self.年龄 = 年龄
        print(f"一只叫{名字}的猫出生了")
猫1 = 猫("小白", 2)
print(猫1.名字)
print(猫1.年龄)

运行结果

一只叫小白的猫出生了
小白
2

对比:如果没有 `__init__`,对象创建时不能方便地设置初始属性

class 猫:
    pass
猫1 = 猫()
# 猫1.名字  # 会报错,因为还没设置
猫1.名字 = "小白"   # 只能手动一个个赋值
有了 `__init__`,创建对象时就能一次性把属性设好。

常见使用场景

1. 初始化对象的属性:
class 学生:
    def __init__(self, 姓名, 学号):
        self.姓名 = 姓名
        self.学号 = 学号
学生1 = 学生("小明", "001")
2. 执行对象创建时需要准备的工作,比如打开文件、建立连接:
class 文件读取器:
    def __init__(self, 路径):
        self.文件 = open(路径, 'r', encoding='utf-8')
3. 给属性设置默认值:
class 配置:
    def __init__(self, 调试模式=False):
        self.调试模式 = 调试模式
配置1 = 配置()            # 默认 False
配置2 = 配置(调试模式=True)

提醒:- `__init__` 不是真正意义上的“构造函数”,它只是初始化方法,真正创建对象的是 `__new__`。但大多数情况下你只需要关心 `__init__`。 - `__init__` 的第一个参数必须是 `self`,表示当前实例。 - `__init__` 不能有返回值(返回 `None`),否则会报错。

官方文档:https://docs.python.org/zh-cn/3/reference/datamodel.html#object.__init__

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条