一文让你彻底搞懂Python中__str__和__repr__

一文让你彻底搞懂Python中__str__和__repr__

在Python中,__str____repr__是两个常用的魔术方法,它们都可以用来返回对象的字符串表示,但是有些细微的区别。

__str____repr__的区别

总体来说,__repr__用于开发者调试、测试和错误记录,而__str__用于最终用户展示。

当你需要了解对象的内部细节时,可以打印__repr__的返回值;当你需要展示对象的信息给最终用户时,可以打印__str__的返回值。两者的目的不同,返回值的风格也不同。

__repr__

__repr__用于返回对象的字符串表示,通常这个字符串可以用来重建当前对象。在Python中,如果一个对象没有定义__str__方法,解释器会调用__repr__方法来显示对象。

示例1:

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

    def __repr__(self):
        return f"Person({self.name}, {self.age})"

p = Person("Tom", 18)
print(p)  # 当没有定义__str__时,会调用__repr__方法来显示对象

输出:

Person(Tom, 18)

示例2:

>>> import datetime
>>> d = datetime.datetime.now()
>>> d
datetime.datetime(2021, 11, 27, 12, 21, 35, 158157)
>>> repr(d)
'datetime.datetime(2021, 11, 27, 12, 21, 35, 158157)'

__str__

__str__用于返回对象的字符串表示,通常这个字符串可以用来展示给最终用户。在Python中,如果一个对象定义了__str__方法,可以使用print等函数来展示对象。

示例1:

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

    def __repr__(self):
        return f"Person({self.name}, {self.age})"

    def __str__(self):
        return f"Name: {self.name}, Age: {self.age}"

p = Person("Tom", 18)
print(p)  # 使用__str__方法来显示对象

输出:

Name: Tom, Age: 18

示例2:

>>> import datetime
>>> d = datetime.datetime.now()
>>> d.__str__()
'2021-11-27 12:21:35.158157'
>>> str(d)
'2021-11-27 12:21:35.158157'

总结

在编写Python代码时,我们应该在类中同时定义__str____repr__方法。__repr__方法用于对象的调试、测试和错误记录,__str__方法用于最终用户展示。

两者的实现方式可能有所不同,__repr__方法通常返回一个可以重建对象的字符串,而__str__方法通常返回一个展示给用户的字符串。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文让你彻底搞懂Python中__str__和__repr__ - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • python操作列表的函数使用代码详解

    以下是“Python操作列表的函数使用代码详解”的完整攻略。 1. 列表的概述 在Python中,列表是一种常见的数据结构,用于存储一组有序的数据列表中的每个元素可以是任意类型的数据,例如数字、字符串、布尔值等。列表是可变的,可以动态地添加、删除和修改元素。下面介绍Python列表的相关知识点。 2. 列表的基本操作 2.1 创建列表 在Python中,可以…

    python 2023年5月13日
    00
  • Python中的MongoDB基本操作:连接、查询实例

    Python中的MongoDB基本操作:连接、查询实例 连接MongoDB 在Python中使用MongoDB需要先安装PyMongo库。安装方法如下: pip install pymongo 安装完毕后,使用以下代码连接MongoDB: import pymongo # 连接MongoDB client = pymongo.MongoClient(host…

    python 2023年5月14日
    00
  • Python接单的过程记录分享

    关于这个话题,我可以为您提供以下的Python接单的过程记录分享攻略: 一、前言 在进行Python接单之前,首先需要做好准备,了解相关行业信息和工作要求,扩展自己的技术栈,增强自己的竞争力。 二、找到合适的项目平台 目前市场上有很多针对程序员的项目平台可以选择,比如国内的猪八戒网,外国的freelancer等。其中,GitHub是业内知名度和口碑普遍较高的…

    python 2023年6月6日
    00
  • 解决pycharm启动后总是不停的updating indices…indexing的问题

    这个问题是由于Pycharm在启动时需要对Python包进行扫描索引,如果包数量较多,则需要一些时间来进行索引。但是有些情况下,这个过程可能会出现意外中断,导致Pycharm无法完成索引任务。 以下是解决这个问题的步骤: 1. 检查是否有防火墙或者代理软件导致的网络问题 在索引Python包时,Pycharm需要连接到网站来获取Python包的信息。因此,如…

    python 2023年6月3日
    00
  • Python如何测试stdout输出

    测试stdout输出是Python测试中一个非常重要的部分,因为很多Python代码都依赖于stdout来输出结果。在Python中测试stdout输出可以使用unittest和pytest两个常用的测试框架。 使用unittest进行stdout输出测试 在unittest框架中,可以使用io.StringIO模块来捕获stdout输出。下面是一个示例代码…

    python 2023年6月3日
    00
  • 浅谈Python爬虫原理与数据抓取

    针对 “浅谈Python爬虫原理与数据抓取” 这个主题,我们可以从以下几个方面入手进行讲解。 1. Python爬虫原理 Python爬虫是利用Python编写程序,自动化地抓取网络上的数据的一种技术。其主要原理是通过HTTP协议向Web服务器发送请求,获取服务器返回的数据,然后进行解析提取有用的信息。大体流程如下: 发送HTTP请求 获取服务器响应 解析H…

    python 2023年5月14日
    00
  • Python 3中print函数的使用方法总结

    下面是“Python 3中print函数的使用方法总结”的完整攻略: 1. print函数概述 print()函数是Python内置函数之一, 它提供了一种简单、通用的方式在屏幕上输出结果。print()函数可以打印多种类型的对象,如字符串、数字、列表、元组、字典等。下面我们就来看看print函数的具体用法。 2. print函数的基本用法 使用print(…

    python 2023年6月5日
    00
  • Python列表list内建函数用法实例分析【insert、remove、index、pop等】

    以下是详细讲解“Python列表list内建函数用法实例分析【insert、remove、index、pop等】”的完整攻略。 在Python中,列表(list)是种常见数据结构。Python提供了许多内建函数来操作列表,包括insert()、remove()、index()、pop()等。本文将详细绍这些函数的用法,并提供一些示例说明。 insert()函…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部