__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全部词条