尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

__repr__魔术方法

__repr__魔术方法
📅 发布时间:2026/6/19 13:37:41

__repr__ 是 Python 中一个非常重要的魔术方法(Magic Method),也常被称为双下划线方法 (Dunder Method)。它的主要作用是为对象提供一个官方的、明确的、面向开发者的字符串表示形式(Representation)。

简单来说,当你需要用代码的方式来重建或识别一个对象时,你就需要用到 __repr__。


__repr__ 的核心作用

1. 明确的、面向开发者的字符串

__repr__ 方法应该返回一个字符串,这个字符串的目标是毫不含糊地描述对象是什么。理想情况下,这个字符串应该是一个有效的 Python 表达式,可以直接用来重建该对象。

  • 调用场景:
    • 当你在 Python 交互式命令行或 Jupyter Notebook 中直接输入一个变量名时。
    • 当你调用内置函数 repr(obj) 时。
    • 在调试和日志记录中。

2. 与 __str__ 的区别

__repr__ 经常与另一个魔术方法 __str__ 进行比较,它们的区别是:

特性 __repr__ (Representation) __str__ (String)
目标受众 开发者(Developer) 用户(End User)
用途 调试、日志记录,要求明确、无歧义。 打印输出,要求可读、友好。
理想返回值 通常是 <ClassName(attribute1=value1, ...)> 或一个能重建对象的表达式,例如:Linear(784, 512)。 友好的句子,例如:"一个包含 784 个输入的线性层。"
默认行为 如果未定义 __str__,print() 函数会退回到调用 __repr__。 如果未定义,则调用父类的 __str__ 或 __repr__。

如何在你的类中实现 __repr__

以你的 Linear 类为例,如果实现了 __repr__,可以大大方便你检查网络结构:

示例代码

class Linear:def __init__(self, in_features, out_features, lr):self.in_features = in_featuresself.out_features = out_featuresself.lr = lr# ... (其他初始化代码)# 实现 __repr__ 魔术方法def __repr__(self):# 返回一个可以重建该对象的字符串return f"Linear(in_features={self.in_features}, out_features={self.out_features}, lr={self.lr})"# 创建对象
layer1 = Linear(784, 512, 0.008)# 打印输出
print(repr(layer1))
print(layer1) # 如果没有定义 __str__,print 也会使用 __repr__

打印输出

Linear(in_features=784, out_features=512, lr=0.008)
Linear(in_features=784, out_features=512, lr=0.008)

通过实现 __repr__,你在调试时可以清晰地看到这个 Linear 层的输入、输出和学习率,这比看到默认的 <__main__.Linear object at 0x...> 要有用得多。

相关新闻

  • 合合信息获首批“个人信息保护合规审计自审计能力评价”最高等级认证
  • 微云二手车运营版系统:多端覆盖的二手车平台解决方案
  • Linux常见命令1

最新新闻

  • 零代码跨平台UI自动化实践:Midscene.js核心原理与场景驱动开发
  • 2026长春防水补漏维修团队实测盘点TOP4:长春业主房屋渗漏修缮靠谱选择 - 宅安选房屋修缮
  • 苏州 GEO 优化公司怎么选?实测对比后,优先推荐企优托一网推王超团队 - 新闻快传
  • Th1 +
  • Gemma 4部署全指南:Apache 2.0开源模型的全设备多模态实战
  • Tdiv

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号