python中的魔法函数及pytorch中forward()函数

python 中的魔法函数

本节参照 python杂记------魔法方法 进行总结和梳理。

魔法方法(magic methods):python 中的魔法方法是指方法名以两个下划线开头并以两个下划线结尾的方法,因此也叫 Dunder Methods (Double Underscores),常用于运算符重载。

魔法方法会在对类的某个操作时后端自动调用,而不需要自己直接调用。例如,创建一个类A的对象,a=A(),python就会自动调用__new__()和__init_()函数

类函数__init__()的理解

在创建类后,类通常会自动创建一个__init__()方法。该方法是一个特殊的方法,类似 JAVA 语言中的构造方法。每当创建一个类的新实例时,Python 都会自动执行它。init () 方法必须包含一个参数,并且必须是第一参数。self 参数是一个指向实例本身的引用,用于访问类中的属性和方法。在方法调用时会自动传递实际参数 self。因此,当__init__()方法只有一个参数时,在创建类的实例时,就不需要指定参数了。

在__init__()方法中,除了 self 参数外,还可以自定义一些参数,参数间使用逗号","进行分隔。例如,init(self, a, b),但是在实例化类时,需要指定 a 和 b 这两个参数。

初始化和构造相关的魔法函数:

方法名 描述
new(cls, other) 在实例化一个对象的时候被调用
init(self, other) 用于初始化对象,被__new__方法调用
del(self) 对象的析构方法

集合相关的魔法函数:

方法名 描述
len(self) 被内置方法len()调用, 返回容器的长度, 可变和不可变的容器类型都需要实现
getitem(self, key) 在使用key访问成员时调用, object[key]
setitem(self, key, value) 给集合中key值赋值时被调用, object[key] = value
delitem(self, key) 被del 调用, 例如: del object[key]
contains(self) 在执行in()或者not in时被调用
reversed(self) 被内置方法reversed()调用, 翻转序列的顺序
missing(self) 在字典的子类中使用,当试图访问字典中不存在的key时被调用

类函数__getitem__()的理解

在python中__getitem__(self,key)方法被称为魔法方法,这个方法返回所给键对应的值。

当对象是序列时,键是整数。当对象是映射时(字典),键是任意值。

在定义类时,如果希望能按照键取类的值,则需要定义__getitem__()方法。如果给类定义了__getitem__()方法,则当按照键取值时,可以直接返回__getitem__()方法执行的结果。

pytorch 中 forward() 函数

本节参考 #深入探究# PyTorch中的 forward() 方法详解 进行的总结梳理。

使用 PyTorch 进行模型训练时,不需要显式地调用 forward 函数,只要在实例化一个对象中传入对应的参数就可以自动调用 forward 函数。

PyTorch 中的大部分方法都继承自 torch.nn.Module,而 torch.nn.Module 的__call__(self) 函数中会返回 forward() 函数的结果,因此 PyTroch 中的 forward() 函数等于是被嵌套在了__call__(self) 函数中;因此 forward() 函数可以直接通过类实例化的对象被调用,而不用实例化对象。

javascript 复制代码
class Module(nn.Module):
    def __init__(self):
        super(Module, self).__init__()
        # ......
       
    def forward(self, x):
        # ......
        return x

data = 10  # 输入数据
module = Module() # 实例化一个对象
module(data)  # 前向传播,自动调用module.forward(data) 
相关推荐
zzb158014 小时前
Agent案例-智能文档问答助手
java·人工智能·笔记·python
HP-Patience14 小时前
【Python爬虫常见错误】- AJAX动态加载数据爬取
爬虫·python·ajax
青瓷程序设计14 小时前
【基于 YOLO的咖啡豆果实成熟度检测系统】+ Python+算法模型+目标检测+2026原创
python·算法·yolo
天才测试猿14 小时前
Python接口自动化测试之Token详解及应用
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
童园管理札记14 小时前
2026实测|GPT-4.5+Agent智能体:3小时搭建企业级客服系统,附完整源码与部署教程(二)
人工智能·python
:mnong15 小时前
附图报价系统设计分析3
python·openvino
AmyLin_200115 小时前
【pdf2md-2:关键核心】PDF 转 Markdown 技术拆解:两阶段流水线、四级标题检测与段落智能合并
windows·python·pdf·pip·pdf2md
薛不痒15 小时前
Llamafactory的使用(1)
人工智能·python·llama
不喝水的鱼儿15 小时前
KT Qwen3.5-35B-A3B 记录
java·前端·python
小陈工15 小时前
Python Web开发入门(三):配置文件管理与环境变量最佳实践
开发语言·jvm·数据库·python·oracle·性能优化·开源