Python 的开放性问题:Python 中的 `__str__` 和 `__repr__` 方法有什么区别?

简介: 【1月更文挑战第2天】

在Python中,__str____repr__是两个特殊方法,用于定义对象的字符串表示形式。它们之间有一些区别,主要体现在它们的用途和调用时机上。

  1. __str__方法:

    • 用途:__str__方法定义了对象的“用户友好”或“格式化”字符串表示形式。通常,这个方法被用于print()函数和str()函数。
    • 调用时机:当你使用print()函数或str()函数时,如果对象定义了__str__方法,那么它会被调用。

    例如:

    class MyClass:
        def __str__(self):
            return "This is a user-friendly string representation of the object."
    
    obj = MyClass()
    print(obj)  # 调用 __str__ 方法
    
  2. __repr__方法:

    • 用途:__repr__方法定义了对象的“官方”或“开发者友好”字符串表示形式,通常应该是一个可以用来重新创建对象的表达式。它用于repr()函数、交互式解释器中直接输入对象名字、以及在调试时显示对象。
    • 调用时机:如果对象没有定义__str__方法,或者__str__方法返回一个非字符串的对象,那么在调用print()函数或str()函数时,会调用__repr__方法。

    例如:

    class MyClass:
        def __repr__(self):
            return "MyClass()"
    
    obj = MyClass()
    print(obj)  # 调用 __repr__ 方法
    

通常情况下,建议实现__repr__方法,以确保对象在交互式环境和调试中能够提供有用的信息。如果希望对象在一般情况下也有友好的字符串表示,那么可以同时实现__str__方法。如果只实现了__repr__而没有实现__str__,则在调用print()函数时,会调用__repr__方法。

相关文章
|
5月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
466 1
|
6月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
221 2
|
6月前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
175 0
|
5月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
652 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
4月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
218 4
|
6月前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
347 4
|
5月前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
150 0
|
6月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
304 0
|
5月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
441 102
|
5月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
392 104

推荐镜像

更多