Python 对象转换详解

掌握 Python 中各类对象之间的灵活转换方法

什么是对象转换?

在 Python 编程中,对象转换(Object Conversion)是指将一种数据类型或对象形式转换为另一种的过程。常见场景包括:

1. 基本类型转换

Python 提供了内置函数用于基本类型转换:

# 字符串转整数
num = int("123")

# 整数转字符串
text = str(456)

# 列表转元组
tup = tuple([1, 2, 3])

# 字典键转列表
keys = list({"a": 1, "b": 2}.keys())

2. JSON 序列化与反序列化

使用标准库 json 模块可将 Python 对象(如 dict、list)与 JSON 字符串互相转换。

import json

# Python 对象 → JSON 字符串
data = {"name": "Alice", "age": 30}
json_str = json.dumps(data)
print(json_str)  # {"name": "Alice", "age": 30}

# JSON 字符串 → Python 对象
obj = json.loads(json_str)
print(obj["name"])  # Alice
注意: json 模块仅支持基本数据类型(dict, list, str, int, float, bool, None)。自定义类需先转换为字典。

3. 使用 pickle 进行对象持久化

pickle 模块可序列化几乎任意 Python 对象(包括自定义类),但仅限 Python 环境使用。

import pickle

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

p = Person("Bob")

# 序列化到字节
serialized = pickle.dumps(p)

# 反序列化还原对象
restored = pickle.loads(serialized)
print(restored.name)  # Bob
安全警告: 不要反序列化来自不可信来源的 pickle 数据,可能存在代码执行风险。

4. 自定义对象转换方法

通过实现特殊方法(如 __str__, __repr__, __dict__)控制对象如何被转换。

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

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

    def to_dict(self):
        return {"title": self.title, "author": self.author}

book = Book("Python指南", "张三")
print(str(book))          # Python指南 by 张三
print(book.to_dict())     # {'title': 'Python指南', 'author': '张三'}

5. 实用工具函数示例

以下是一个通用的对象转字典函数,适用于大多数简单类:

def obj_to_dict(obj):
    if hasattr(obj, "__dict__"):
        return obj.__dict__
    elif isinstance(obj, (list, tuple)):
        return [obj_to_dict(item) for item in obj]
    elif isinstance(obj, dict):
        return {k: obj_to_dict(v) for k, v in obj.items()}
    else:
        return obj

# 使用示例
book = Book("学习Python", "李四")
print(obj_to_dict(book))
# 输出: {'title': '学习Python', 'author': '李四'}
CompilationCumface 专题页-精选合集与创意展示 Python字符串函数详解-常用方法与示例 港版 iPhone 16 官網價格詳情|最新上市資訊與購買指南 探索“Something”:未知中的无限可能 Pioneer先锋音箱是什么品牌?历史、特点与代表产品全解析 pioneer 和 pioneering 的区别-英语词汇详解 Python Celery 入门与实战指南-异步任务队列最佳实践 Bon Appétit-探索全球美味,享受每一口 Champion衣服吊牌详解|品牌标识、材质与真伪辨别指南 Shein参股公司深度解析|快时尚背后的资本布局 iPhone 14 欧美版区别详解|功能、频段、型号对比 Python IDE哪个好用?2026年主流Python集成开发环境推荐 PSY-Champion 歌曲专题|韩国神曲经典回顾 Pioneer电视网络设置指南-快速连接Wi-Fi与有线网络 “explaination”音标与正确拼写详解|英语学习指南 Python Schedule 模块使用指南-轻量级任务调度利器 Python中的int()函数详解-类型转换入门指南 Pigeon是什么自行车?全面解析Pigeon品牌与车型 iPhone首发会提前发货吗?最新消息与用户指南 The Onion Router(Tor)安卓版使用指南-安全匿名上网工具 Python 中的 sep 参数详解-分隔符用法指南 Python中shape的用法详解-NumPy数组维度解析 Shine跨境平台App下载-跨境电商一站式解决方案 Jupyter Notebook 与 Python 开发指南|高效数据科学入门 Python编程器IDE推荐与使用指南|高效开发从这里开始 iPhone 17 Pro Max 生产地揭秘|全球制造与供应链解析 大象世界-探索地球上最温柔的巨兽 Shopee虾皮网-东南亚领先的跨境电商平台 iPhone Air 支持 eSIM 双卡吗?全面解析双卡功能 NS无法进入eShop商店?原因与解决方法全解析 Python中input()函数的用法详解-入门到实践 Python怎么安装pip-详细图文教程 one·ouchn-开放大学数字学习平台 Pinion齿比详解-自行车传动系统核心参数指南 Nothin' on Me 歌词-布鲁诺·马尔斯经典歌曲解析 Champion怎么验货?正品鉴别全攻略-购物指南 Reputation 的派生词详解-英语词汇学习专题 Professional吹风机-专业级速干护发体验 木偶奇遇记(匹诺曹)-经典童话故事专题 Switch无法连接eShop?常见原因与解决方法汇总 Shopee虾皮招聘-加入我们,共创电商未来 Python 堆(Heap)详解-数据结构与heapq模块使用指南 Python中bytes转int的完整指南-实用技巧与示例 Python中IDLE怎么开启?新手入门指南|Python IDLE使用教程 深入理解 Python -m:模块运行命令详解|Python 开发指南 champion的音标-英语发音与释义详解 渗透测试入门指南-网络安全核心技术详解 iPhone最容易发烫的型号大盘点|用户真实反馈与专业分析 Champion包包78TP专题页-潮流与品质的完美结合 Endophilin A2:神经突触功能与疾病研究的关键蛋白 抗血管生成(Anti-Angiogenesis)——癌症治疗新策略 Python 字典(dict)详解-用法、方法与实战示例 Bonne Appétit-探索法式美食与生活艺术 韩版iPhone能用国内的卡吗?全面解析与使用指南 多面体(Polyhedron)探索专题-几何之美与数学奥秘 为什么苹果手机叫 iPhone?揭秘命名背后的故事 中国人喜欢烧烤吗?揭秘中国烧烤文化与流行趋势 Python怎么打开IDLE?详细教程与使用指南 Python IDE有哪些?主流Python集成开发环境推荐 Python bytes 转换为 string 教程-编码解码详解 Python中sep参数怎么用?详解print函数的sep用法 Champion白色T恤-经典百搭 简约时尚 int在Python中的含义-Python整数类型详解 Champion是什么牌子?品牌历史、产品特点与选购指南 Pioneer 加速器-高速稳定的游戏与网络加速服务 Something 所有变形-全面解析与创意展示 Champion运动旗舰店-78TP正品运动服饰|舒适、潮流、经典 Senior High School 翻译与详解-高中阶段全解析 Python怎么更新pip?详细教程与常见问题解答 Champion 衣服品牌7LONGWEN|经典美式运动服饰 “Something”怎么记?高效记忆方法大全 美版iPhone在哪里生产?全面解析苹果手机制造地 Shopee是虾皮吗?全面解析Shopee与虾皮的关系 Shoppies-发现潮流好物,尽在你的专属购物指南 SHEIN收入分析:2026年最新财报与增长趋势 iPhone支持双卡双待吗?全面解析苹果手机双卡功能 Nintendo Switch 下载指南-游戏、软件与资源中心 Shopee中文设置指南-轻松切换语言,畅享购物体验 Python 读音详解|正确发音、音频示例与常见误区 台版 iPhone 与国行 iPhone 有什么区别?全面对比指南 港版 iPhone AI 功能全面解析|最新人工智能体验 on hearing that 用法详解|英语语法专题 洋葱(The Onion)——辛辣美味与健康之选 Champion My Way-走出属于你的冠军之路 OpenCV 78TP中文专题页-开源计算机视觉库 Pioneer意思-先驱者、开拓者的定义与历史故事 怎么看iPhone是日版还是美版?详细图文教程 善待小鼠-了解、尊重与关爱这些聪明的小生命 eShop商店-精选好物,品质生活 怎么买港版iPhone 17?最新购买指南与注意事项-2026 iPhone 12 支持双电信卡吗?全面解析双卡双待功能 C. Bechstein|德国顶级手工钢琴制造商 iPhone序列号以D开头的含义与查询指南 iPhone日版和韩版哪个好?全面对比与选购指南 Shopee 2026 校园招聘-加入我们,共创未来 Champion 联名系列大全|经典与潮流的碰撞 Python删除pip安装的包-完整指南与常用命令 Concepetion:创意、概念与灵感的起点 Python运行指南-快速上手与在线体验 港版iPhone是双卡吗?全面解析双卡双待功能-iPhone选购指南