__str__和__repr__比较

Python中repr()和str()的比较与分析 具体来说,repr()所得到的字符串可以直接传递给eval()函数进行求值操作,而str()得到的字符串则不能。同时,repr()所得到的字符串中可能包含转义字符,而str()所得到的字符串中不会出现。在Python中,repr()和str()是两个常用的内置函数,主要功能是将一个对象转化为字符串形式。而str()函数则只会返回类名及其内存地址。对于列表类型,无论使用repr()还是str()函数,得到的都是一样的输出结果。这里可以看出,对于数字类型的变量,repr()和str()得到的结果是一样的。 阅读详情
python的class的str和repr

首先定义一个类:

class Item():
    def __init__(self,name):
        self._name=name

  def __str__(self):
     return "Item's name is :"+self._name
print((Item("Car"),))

返回的是:

C:\Python35\python.exe C:/fitme/work/nltk/1.py
(<__main__.Item object at 0x000001DC3F9BB390>,)

Process finished with exit code 0

更改成这样的代码后:

class Item():
    def __init__(self,name):
        self._name=name
    # def __str__(self):
    #     return "Item's name is :"+self._name

    def __repr__(self):
        return "Item's name is :" + self._name


print((Item("Car"),))

返回结果是:

C:\Python35\python.exe C:/fitme/work/nltk/1.py
(Item's name is :Car,)

Process finished with exit code 0

从上边的代码中可以清晰的看出:对 repr 进行重构后,无论是直接输出对象还是打印对象的信息都是按照我们定义的格式进行输出,而对str进行重构后,仅仅是在打印时才是按照我们定义的格式输出,
有人解答如下:

1.对于一个object来说,str和repr都是返回对object的描述,只是,前一个的描述简短而友好,后一个的描述,更细节复杂一些。

2.对于有些数据类型,repr返回的是一个string,比如:str(‘hello’) 返回的是’hello’,而repr(‘hello’)返回的是“‘hello’”

3.现在是重点了:

Some data types, like file objects, can't be converted to strings this way. The __repr__ methods of such objects usually return a string in angle brackets that includes the object's data type and memory address. User-defined classes also do this if you don't specifically define the __repr__ method.

When you compute a value in the REPL, Python calls __repr__ to convert it into a string. When you use print, however, Python calls __str__.

When you call print((Item("Car"),)), you're calling the __str__ method of the tuple class, which is the same as its __repr__ method. That method works by calling the __repr__ method of each item in the tuple, joining them together with commas (plus a trailing one for a one-item tuple), and surrounding the whole thing with parentheses. I'm not sure why the __str__ method of tuple doesn't call __str__ on its contents, but it doesn't.
print(('hello').__str__())
print(('hello').__repr__())

有一个更简单的例子如下:

from datetime import datetime as dt
print(dt.today().__str__())
print(dt.today().__repr__())
C:\Python35\python.exe C:/fitme/work/nltk/1.py
2017-06-16 11:09:40.211841
datetime.datetime(2017, 6, 16, 11, 9, 40, 211841)

Process finished with exit code 0
Python中的内置函数str()、repr()、cmp() 1.str()函数 str() 函数将对象转化为适于人阅读的形式 阅读详情

相关推荐

集成电路设计笔记(七)UVLO设计

1. 什么是UVLO 欠压锁定(Undervoltage-Lockout)简称UVLO,是电子设备中在电源电压低于正常工程准位时,切断电源的电路。在嵌入式系统中常会用UVLO监控电池电压,若电压低于一定值,会直接切断电源,保护嵌入式系统的电路。 许多电子设备中都有UVLO的功能,例如在镇流器中就有UVLO电路,若电压过低时直接切断电源。 UVLO就是低电压锁定; 低压关断. 欠压关断模式是当供电电压低于IC的开启门限电压时的一种保护模式。欠压关断模式可保证IC在供电电压不足时不致于被损坏。一个低电压锁定(

ccbirds 2万+

一篇文章让你搞懂__str__和__repr__的异同?

都是用来输出一个对象__str__的目标是可读的,__str__()并不预期返回一个有效的 Python 表达式,但可以使用更方便或更准确的描述信息。__repr__的目标是明确的,所返回的字符串应该准确、无歧义,并且尽可能表达出如何 用代码创建出这个被打印的对象。容器的__str__方法的使用包含对象的__repr__

weixin_73136678的博客 953

Python开发者必看:5分钟搞定Gemini API的3种调用方式(含代码示例)

本文为Python开发者详细介绍了三种高效调用Gemini API的核心方式:基础同步调用、流式调用和聊天模式,并涵盖多模态应用等高级特性。通过清晰的代码示例和实战场景分析,帮助开发者快速掌握Gemini API的集成与优化,提升AI应用开发效率。

g8f9d0s1a2的博客 1122

Python中__repr__和__str__区别

看下面的例子就明白了class Test(object): def __init__(self, value='hello, world!'): self.data = value>>> t = Test() >>> t <__main__.Test at 0x7fa91c307190> >>> print t <__main__.Test object at 0x7fa91

每天的表现,未来的必然! 8万+

S7-1200PLC与昆仑通态触摸屏以太网通信的具体方法和步骤(图文)

S7-1200PLC与昆仑通态触摸屏以太网通信的具体方法和步骤(图文)

Robot_PLC_HMI_Automation 1万+

二叉树三种遍历(动态图+代码深入理解)

文章目录一、图示理解(图片是一位前辈所留,在此感谢)1、先序遍历2、中序遍历3、后序遍历4、层序遍历二、深入理解三种遍历让我们来理解一下绕着外围跑一整圈的真正含义是:遍历所有结点时,都先往左孩子走,再往右孩子走。下面做一个实例吧三、代码实现加以理解以下是C语言全部代码实现下面是同样的例子用c++实现,大家可以参考一下 一、图示理解(图片是一位前辈所留,在此感谢) 1、先序遍历 先序遍历可以想象成,...

流楚丶格念的博客 3万+

__str__和__repr__的区别

&gt;&gt;&gt; class Hello(): def __init__(self,sayhello = 'Hello Python!!'): self.word = sayhello &gt;&gt;&gt; T = Hello() &gt;&gt;&gt; T &lt;__main__.Hello object at 0x000001399B1575F8&gt; &gt...

dxcve的博客 607

10年上位机开发踩过的20个坑:C#通信/线程/UI适配避坑指南

通信层:所有通信操作异步化、异常全覆盖,加断线重连+心跳检测,多设备隔离资源;线程层:UI更新必做跨线程判断,共享数据加锁,线程池限流,异常不静默;UI层:适配高分屏/DPI,用布局容器替代固定坐标,多屏场景绑定主屏幕。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 904

python - __str__ 和 __repr__

内建函数str()和repr() (representation,表达,表示)或反引号操作符(``)可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。str()函数得到的字符串可读性好(故被print调用),而repr()函数得到的字符串通常可以用来重新获得该对象,通常情况下 obj==eval(repr(obj)) 这个等式是成立的。这两个函数接受一个对象作为其参数,返回适当的字符串

yyt8yyt8的专栏 3万+

24. SAP 标准产品里使用 OData 服务的一些细节分享

笔者在编写使用事物码 SEGW 开发 SAP OData 服务的系列步骤时,但凡遇到技术上一些疑难问题,喜欢去参照 SAP 标准产品里是如何使用 OData 服务的,不少问题都可以去参考 SAP 标准产品的 OData 服务实现细节来解决。 因此本文记录笔者在编写本教程的过程中,曾经研究过的 SAP OData 服务实现的一些细节,把这些细节分享给大家,希望能起到参考作用。 同时,教程也不断收到一些朋友在评论区留言,对于不少留言的回复,我也是拿 SAP 标准 OData 服务的实现作为论据来回复的。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2031

ETAS工具导入Com Arxml修改步骤

通讯协议栈开发一般通过导入DBC实现,ETAS工具本身导入DBC也是生成arxml后执行cfggen,本文介绍直接导入客户提供的arxml文件,实现通讯协议栈的生成。通过Arxml导入相比于DBC来说,少了从DBC转为arxml的过程。而且arxml中能提供的信息也会更多。如果是DBC的话,很多信息(如PNC的映射,CANTP的配置等)都需要额外配置。不过还有连DBC都无法提供的,那就更麻烦了~

赞的博客 1541

__repr__和__str__的区别

__repr__ __str__作用以及区别,适用的目的,__repr__在python源码中的示例

格物致知 4842

PD详解—第一章—Type-C连接

Type-C连接 今天大师匈下班比较早,再给大家侃一侃PD,希望大家支持。 PD和Type-c的关系 首先讲一下PD快充的实现步骤,本文主要是Source端(电源),Sink端的差不多也一样,只是策略不同而已。 TypeC连接-->广播电源能力Source capbility(数据交互)->打电压电流->等待其他指令。 所以typec连接是第一步,很多人会从字面意思理解typec连接,这不就是把线给插上去就好了吗? 不知道有没有优秀的同学想到正确答案; 正确答案:typec连接的本质是为

大师匈的博客 1万+

python中的str方法和repr方法_Python 的 __str__ 和 __repr__ 方法比较

阅读到 Strings中关于转换对象为字符串的内容,介绍了 repr 函数,趁着还没有真正了解Python面向对象的生疏与热度,感性上理解一下 repr 与 str 这两个函数的区别。Python的全局方法 repr 和 str 会映射到对象的 __repr__ 和 __str__ 的方法调用,还有 str(obj) 时会调用哪个方法,以及 print(obj) 和调试 Python代码...

weixin_39928768的博客 142

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python的str()和repr()函数比较

兄弟你好,我也在学习python,不过这种问题直接google就解决了。。。顺便帮你顶一下吧 以下内容来自网络~ str()一般是将数值转成字符串。  repr()是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思。如list,dict使用str()是无效的,但使用repr可以,这是为了看它们都有哪些值,为了显示之用。  The str() function is

hzp666的博客 390

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python中repr方法_Python 的 __str__ 和 __repr__ 方法比较

阅读到 Strings中关于转换对象为字符串的内容,介绍了 repr函数,趁着还没有真正了解Python面向对象的生疏与热度,感性上理解一下 repr与 str这两个函数的区别。Python的全局方法 repr和 str会映射到对象的 __repr__和 __str__的方法调用,还有 str(obj)时会调用哪个方法,以及 print(obj)和调试 Python代码...

weixin_39675513的博客 128

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Python 的 __str__ 和 __repr__ 方法比较

阅读到 Strings 中关于转换对象为字符串的内容,介绍了 repr 函数,趁着还没有真正了解 Python 面向对象的生疏与热度,感性上理解一下 repr 与 str 这两个函数的区别。 Python 的全局方法 repr 和 str 会映射到对象的 __repr__ 和 __str__ 的方法调用,还有 str(obj) 时会调用哪个方法,以及 print(obj) 和调试 Python ...

一叶不知秋 590

python帝国cms__repr_在python中是正式还是非正式?

在python方法的创建中,有的是为了让计算机能够快速识别的,有的是服务于我们使用者的。相信这么说,小伙伴们已经大致知道正式和非正式使用的不同方向的。关于_repr_的使用上,经常会跟__str__放在一起讨论。当我们向开始使用_repr_前,需要弄清楚在python中是正式还是非正式的,下面就这么问题展开讨论。也许可能也听说过__repr__函数,它也可以实现根据我们的需要自定义输出的功能。比如...

weixin_39722965的博客 86

在Python里什么时候用.__repr__() 和 .__str__()

电脑程序执行的最常见的任务之一就是**展示数据**。程序通常把信息展示给使用者看。然而,一个程序也应该把信息展示给程序员看,以便开发和维护。程序员需要的关于对象的信息跟展示给用户的应该有所不同,这就是`.__repr__()` vs `.__str__()` 的由来。

SpriteNym的博客 303

python提供两个对象身份比较操作符是_Python学习之路8——Python对象2

1.标准类型操作符1.1对象值的比较比较操作符用来同类型对象是否相等,所有的内内建类型均支持比较运算,比较运算返回返回布尔值True 或 False。>>> 2 == 2True>>> 2.33 < 2.44True>>> 'abc' == 'xyz'False>>> 'abc' < 'xyz'True>&g...

weixin_39761696的博客 456

python基础 -33- 面向对象(类的双下线方法和单例,len,hash,eq,item,str,repr,del,new,call)

len方法 class Person: def __init__(self, name, age): self.name = name self.age = age def __len__(self): return 5 person = Person("小贵", 25) print(len(person))  输出 5 hash方法 class Person: def __init__(self, na

迷雾总会解 209

python提供了两个对象身份比较操作符是_第4章 Python对象(2)

4.5标准类型操作符4.5.1 对象值的比较比较对象是针对对象的值进行的,也就是说比较的是对象的数值而不是对象本身。4.5.2 对象身份比较每个对象都天生具有一个计数器,记录它自己的引用次数。这个数目表示有多少个变量指向该对象。Python提供了is 和 is not操作符来测试两个变量是否指向同一个对象。a is b 等价于 id(a) == id (b)>>> a = b =...

weixin_35955120的博客 1199

python标准函数有哪些_Python随手笔记之标准类型内建函数

Python提供了一些内建函数用于基本对象类型:cmp(),repr(),str(),type()和等同于repr()的(' ')操作符(1)type()type的用法如下:type(object)接受一个对象作为参数,并返回它的类型。他的返回值是一个类型对象。>>>type('r')>>>type(3)>>>type(type(5))(2)cmp()内建函数cmp()用于比较两个对象obj1和o...

weixin_39603799的博客 180

python的标准类型内建函数_Python随手笔记之标准类型内建函数

Python提供了一些内建函数用于基本对象类型:cmp(),repr(),str(),type()和等同于repr()的(' ')操作符(1)type()type的用法如下:type(object)接受一个对象作为参数,并返回它的类型。他的返回值是一个类型对象。>>>type('r')>>>type(3)>>>type(type(5))(2)c...

weixin_39709178的博客 155

【Python进阶】5-1 __str__() / __repr__() / __cmp__() / __len__()

python中 __str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __str__(self): ...

yipyuenkay的博客 241
上一篇: 刷题_01
下一篇: 数据库
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值