Python 实用技巧:优化类打印、JSON 序列化与列表排序

陆遥
陆遥
发布时间:2026-10-12| 2人浏览过
原创

本文分享 Python 编程中的三个实用技巧。首先,通过重写 __repr__ 方法或使用 __dict__ 属性,将默认的对象内存地址输出转化为更易读的字符串形式。其次,利用 json 模块的 dumps 方法结合对象的 __dict__,快速将自定义类实例序列化为格式化的 JSON 字符串。最后,演示如何使用 lambda 表达式对包含自定义对象的列表进行多级排序,支持按单一字段或组合字段(如先名字后键值)进行升序排列,提升数据处理效率。

本系列文章持续分享 Python 的使用建议与实用技巧,每期精选三个要点,旨在帮助开发者提升编码效率与代码质量。

1 如何生成更易读的类实例字符串

不推荐的做法

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


p = Point(3, 4)

print p
# <__main__.Point object at 0x0000000001E1B9E8>

推荐的做法

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

  def __repr__(self):
    return 'Point({self.x}, {self.y})'.format(self=self)


p = Point(3, 4)

print p
# Point(3, 4)

默认情况下,直接打印类实例仅显示内存地址,难以获取具体信息。可以通过定义类的 __repr__ 方法来定制打印输出,使其更具可读性。若不想定义该方法,也可以直接调用对象的 __dict__ 属性以字典形式展示内容,这种方式同样清晰易读。

print p.__dict__
# {'y': 4, 'x': 3}

利用 __dict__ 属性可以将类的内部状态以字典格式输出,便于直观查看各属性值。

2 如何将类实例转换为 JSON 字符串

import json


class User(object):
  def __init__(self, name, id):
    self.name = name
    self.id = id


u = User('user1', 1)
print json.dumps(u.__dict__, indent=4)

'''
{
  "name": "user1",
  "id": 1
}
'''

借助 json 模块提供的 dumps 函数,可以便捷地将类实例的属性字典序列化为标准的 JSON 字符串。

3 如何对包含类的列表进行排序

class User:
  def __init__(self, name, key):
    self.name = name
    self.key = key

  def __repr__(self):
    return 'User({self.name}, {self.key})'.format(self=self)


user_list = [
  User('user1', 3),
  User('user2', 2),
  User('user3', 1),
]

print sorted(user_list, key=lambda user: user.key)
# [User(user3, 1), User(user2, 2), User(user1, 3)]
print sorted(user_list, key=lambda user: user.name)
# [User(user1, 3), User(user2, 2), User(user3, 1)]

此类列表的排序逻辑与字典排序类似。示例中展示了两种排序方式:一是按 user 的 key 字段升序排列,二是按 name 字段升序排列。此外,还支持在名字相同的情况下,进一步依据 key 进行二级排序,具体实现如下所示。

user_list = [
  User('user1', 3),
  User('user1', 2),
  User('user1', 1),
]

print sorted(user_list, key=lambda user: (user.name, user.key))
# [User(user1, 1), User(user1, 2), User(user1, 3)]

以上即为 Python 使用建议与技巧分享(四)的全部内容,更多关于 Python 建议与技巧的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。