跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Python魔术方法详解___init__与__str__用法

__init__ 是初始化方法,负责设置实例属性;__str__ 是返回用户友好字符串表示的方法。前者在对象创建时自动调用,参数含 self 且不返回值;后者被 print() 或 str() 调用,必须返回 str 类型。 __init__ 是对象创建时自动调用的初始化方法,负责设置实例属性; __str__ 是当使用
print()
或
str()
转换对象时被调用,用于返回一个**对用户友好的字符串表示**。 __init__:控制对象怎么“出生” 它不是构造函数(Python 中真正创建对象的是
__new__
),而是初始化函数。只要用类名加括号创建实例,它就会自动执行。 第一个参数必须是
self
,代表当前正在初始化的实例 可以接受任意额外参数,常用来接收初始值并赋给
self.xxx
不需要返回值(或隐式返回
None
),返回其他值会引发
TypeError
例如: class Person:def __init__(self, name, age):self.name = nameself.age = agep = Person("小明", 25) # 自动调用 __init__,设置 name 和 age __str__:决定 print(p) 看到什么 它的核心作用是提供**可读性强、面向用户的字符串描述**,比如调试、日志、终端输出时看到的内容。 Python 3.14.3 微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。 下载 立即学习 “ Python免费学习笔记(深入) ”; 必须返回一个
str
类型对象,返回其他类型会报错 不建议在其中抛异常或做复杂计算,应保持轻量、稳定 如果没定义
__str__
,Python 会回退到
__repr__
(后者更偏向开发者和调试用途) 接上例补充: def __str__(self):return f"Person(name='{self.name}', age={self.age})"print(p) # 输出:Person(name='小明', age=25) 两个方法配合使用的典型场景 日常开发中,它们常一起出现,让类既支持灵活创建,又具备清晰表达能力: 定义数据容器类(如
Book
、
Point
、
Config
)时,用
__init__
接收必要字段,用
__str__
给出简洁摘要 写命令行工具时,
__str__
可返回一行格式化信息,方便用户快速理解对象状态 单元测试中,打印对象看结果是否符合预期,靠的就是
__str__
的可读性 常见误区提醒
__init__
不是构造器:不能通过它控制是否生成实例(要用
__new__
)
__str__
不等于调试用的
__repr__
:后者推荐返回能“重建对象”的字符串(如
Person('小明', 25)
) 不要在
__str__
里修改对象状态——它应该是纯函数式的、无副作用的 如果类有继承关系,记得在子类
__init__
中显式调用
super().__init__()
来初始化父类部分

相关文章