__init__ 详解(Python类构造初始化方法)
·
1. 它是什么
__init__ 是类的初始化方法,前后双下划线,叫魔术方法(魔法函数)。
作用:创建对象实例时自动执行,用来给对象绑定属性、做初始化配置。
2. 执行时机
class Person:
def __init__(self, name):
print("__init__ 自动运行了!")
# self代表当前新建的实例对象
self.name = name
# 只要写这一句,立刻调用 __init__
p = Person("小明")
# 输出:__init__ 自动运行了!
Person("小明"):先创建一块空的对象内存- 自动调用
__init__(self, "小明") self自动传入刚创建好的对象,用来挂载属性
3. self 是什么
self 是固定第一个参数,指代当前实例本身。
通过 self.xxx 定义实例属性,每个对象独立拥有:
class Person:
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
p1 = Person("张三", 20)
p2 = Person("李四", 22)
print(p1.name) # 张三
print(p2.name) # 李四
4. 核心作用
- 接收创建对象时传入的参数;
- 给每个实例绑定专属变量(属性);
- 初始化需要的资源(比如创建张量、打开文件、初始化权重);
- 做初始校验、默认赋值。
5. 常见配套用法
(1)设置参数默认值
class Person:
def __init__(self, name, age=18):
self.name = name
self.age = age
p = Person("小红") # age自动=18
(2)结合你前面的Logistic回归代码举例
class LogisticRegressionManual(object):
def __init__(self):
# 创建实例时,自动初始化权重w、偏置b
self.w = torch.randn(size=(2, 1), requires_grad=True)
self.b = torch.randn(size=(1, 1), requires_grad=True)
# lrm = LogisticRegressionManual()
# 执行这一行,自动运行__init__,创建w和b
6. 容易混淆:__init__ ≠ __new__
__new__:真正创建空白对象(分配内存)__init__:对象创建完成后,填充初始化数据
日常写代码几乎只用__init__。
7. 关键总结
- 类定义里默认第一个写的函数就是
__init__,是类的入口初始化函数; - 创建实例时自动调用,不用手动写
obj.__init__(); - 第一个参数必须是
self,代表自身实例; - 所有
self.属性是每个对象独有的数据; - 双下划线包裹的函数统称魔术方法,Python内部自动触发执行。
更多推荐


所有评论(0)