Python对象转字符串详解

掌握 str()、repr() 与自定义 __str__ / __repr__ 方法

为什么需要将对象转为字符串?

在 Python 中,对象默认没有直观的文本表示。当我们打印对象、记录日志或调试程序时,通常希望看到有意义的信息,而不是类似 <__main__.Person object at 0x...> 的内存地址。

Python 提供了多种机制,让我们可以控制对象如何被转换为字符串。

1. 使用内置函数 str()

str(obj) 会调用对象的 __str__ 方法(如果存在),否则回退到 __repr__

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"姓名:{self.name},年龄:{self.age}"

p = Person("张三", 25)
print(str(p))   # 输出:姓名:张三,年龄:25
print(p)        # 等价于 print(str(p))

2. 使用内置函数 repr()

repr(obj) 用于“开发者友好”的表示,通常应返回可执行的 Python 表达式(理想情况下)。

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __repr__(self):
        return f"Point({self.x}, {self.y})"

pt = Point(3, 4)
print(repr(pt))  # 输出:Point(3, 4)
# 可直接用于 eval()(谨慎使用)
new_pt = eval(repr(pt))

3. 同时定义 __str____repr__

最佳实践:为类同时实现两个方法。
- __str__ 面向用户,简洁易读。
- __repr__ 面向开发者,准确且可重现。

class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author

    def __str__(self):
        return f"《{self.title}》 by {self.author}"

    def __repr__(self):
        return f"Book(title='{self.title}', author='{self.author}')"

b = Book("Python编程", "李四")
print(str(b))   # 《Python编程》 by 李四
print(repr(b))  # Book(title='Python编程', author='李四')

4. 默认行为

如果没有定义 __str____repr__,Python 会使用默认的对象表示:

class Empty: pass

e = Empty()
print(e)  # 输出类似:<__main__.Empty object at 0x000001F4A8C2D3A0>

小贴士

eshop下载-安全高速免费下载eshop客户端 conception 和 concept 的区别详解|英语词汇辨析 Which Panda Do You Like? Discover Your Favorite Panda Personality! Python中IDLE怎么执行代码-新手入门指南 emotion词根词缀解析-英语词汇记忆技巧专题 Endorphinspro4龙年-龙腾盛世,活力绽放 lithosphere怎么读?发音、释义与地质知识详解 iPhone 17有卫星电话功能吗?最新消息与功能解析 Elephantbone裤子-舒适、时尚、环保的牛仔裤品牌 词根探秘:expedition 的词源与演变 iPhone Air 是单卡还是双卡?全面解析苹果手机卡槽配置 先锋者-探索创新与突破的中文专题 Pioneer电视设置信号源-详细图文教程|78TP指南 Alteration:变化与重塑的艺术 Python下载pip包-快速安装与使用指南 Python库大全-常用第三方库推荐与78TP资源导航 Python list转str:完整指南与实用技巧 “Mon Chéri”是什么意思?法语浪漫表达全解析 iPhone 17 Pro Max 香港价格|最新港版报价、购买建议与对比分析 Python编程入门与实战指南|学习Python从零开始 鸟叔《Champion》冠军MV-经典韩流神曲回顾 SHEIN股东信息|公司股权结构与主要投资者 任晓庆与SHEIN:中国快时尚的崛起之路 Pioneer怎么连接手机?详细图文教程-快速配对指南 Pioneer 音箱使用说明-78TP操作指南与常见问题解答 CenCorp分板机-高精度PCB分板解决方案专家 Champion是什么牌子?品牌历史、产品特点与选购指南 如何加入SHEIN?78TP入驻指南与合作方式详解 Compliment 与 Complement 的区别|英语易混淆词详解 Chain Dollar Store-一元好物,品质生活 对她好一点-用温柔和行动表达爱 Python bytes 拼接详解-高效处理二进制数据 Python int() 函数用法详解-快速掌握整数转换技巧 Python3 教程-从入门到精通的完整学习指南 Python3IDE-在线免费 Python 3 编程环境 Python安装库指南-快速上手pip与常用命令 Shopee图片空间-高效管理商品图片的78TP工具 Latent 与 Potential 的区别详解|英语词汇辨析专题 Python 编辑器与 IDE 推荐指南|高效开发工具大全 Python 编码指南:字符编码、文件处理与常见问题详解 iPhone Air 电池容量是多少毫安?全面解析与对比 “Senior”咋读?发音、意思与用法全解析 Python怎么导入time模块-入门指南与实用示例 Python 在线编译器-免费在线运行 Python 代码 iPhone Air 港版有卡槽-全面解析与购买指南 用户投诉与建议中心-倾听您的声音 iPhone首发会提前发货吗?最新消息与用户指南 The Thirsty Pigeon – A Tale of Survival and Hope “Plough into” 翻译与用法详解|英语短语学习专题 Something例句短语大全|常见用法与实用例句 Danny the Champion of the World-罗尔德·达尔经典儿童文学作品 iPhone 台灣 Apple ID 註冊完整教學(2026最新) iPhone序列号JH开头代表什么?全面解析与查询指南 Pushing附魔详解-Minecraft强力附魔指南 冠军Champion图标-经典运动品牌标志与历史 掌握 mPython-从入门到精通的编程指南 Apple iPhone 香港官網入口|最新 iPhone 型號、價格與購買資訊 Senior High 是什么意思?高中阶段详解|教育指南 宝可梦Home手机版-收集、交换、探索你的宝可梦世界 Pinion齿比详解-自行车传动系统核心参数指南 Python强制转换为int详解-类型转换指南 School Supplies 翻译大全-学习用品中英文对照指南 始祖鸟 Endorphin 外套-专业户外硬壳冲锋衣|极致防护与轻量设计 Pioneer7LONGWEN客服中心-专业音频设备支持与服务 Python strip() 函数详解-字符串去空格与指定字符 国行 iPhone 可以在日本使用吗?全面解析与实用建议 NS eShop 登录问题解决指南|常见原因与修复方法 eshop价格查询-最新任天堂eShop游戏价格与优惠信息 IronPython 入门指南-.NET 平台上的 Python 实现 iPhone XS Max 在日本:价格、购买指南与使用体验 Please Be Nice to Me-传递善意与尊重的专题页面 Python subprocess.Popen 详解-安全高效地执行外部命令 It Is Pleasant Doing Something – Enjoy the Little Joys of Life Pixelmon Modpack-在 Minecraft 中捕捉宝可梦! Pioneer DJ 手机打碟指南-移动端专业DJ体验 int在Python中代表什么?整数类型详解|Python基础教程 Python pip 下载与安装指南-快速上手包管理工具 Shine招聘7LONGWEN-发现你的闪耀职业机会 Python 中的 sep 参数详解-分隔符用法指南 深入理解 Python -m:模块运行命令详解|Python 开发指南 iPhone怎么导出B站缓存视频?详细教程与注意事项 RustPython:用 Rust 编写的 Python 解释器 iPhone 17 Pro 提前发货!抢先体验最新苹果旗舰 Shopee商家版App-一站式店铺管理工具 “Senior”的翻译与用法详解|英语词汇专题 "Something" 怎么说?——英语常用表达详解 女生学Python-开启编程之旅,用代码改变世界 Shine集团-引领创新,闪耀未来 Conceptual:探索抽象与创意的边界 Python deque 详解:高效双端队列操作指南 Monchhichi怎么读?发音、含义与文化介绍-萌趣指南 iPhone 第二个手机叫什么?揭秘苹果早期产品历史 Senior是大几?大学年级术语全解析 Shopee买家版-轻松购物,畅享优惠|东南亚领先电商平台 Something所属分类-探索万物归类的奇妙世界 Python pip 安装第三方库完整指南|快速上手与常见问题 深入理解 compile():编译原理与实践指南 Python 中的 %s 格式化字符串详解-入门到精通 eshop手机App-一站式购物体验,尽在指尖 Pineer-探索创新与先锋精神