'__str__'和`__repr__'python之间的区别
在Python中,__str__和__repr__是定义对象的字符串表示但有独特目的的特殊方法。 1。__STR__返回一个人类可读的字符串,并由print()或str()使用。 2。__repr__返回有效的python表达式来重新创建对象,并在repr()或调试上下文中使用。 3。如果仅定义__repr__,则用作__str__,但反之亦然。 4。使用__STR__进行面向用户的输出,__repr__进行开发,记录或调试。两者都可以定义以增强级别的可用性,__repr__理想情况下是明确的和可重复的。
在Python中, __str__
和__repr__
都是用于定义对象如何表示为字符串的特殊方法。但是它们有不同的目的,并在不同的情况下使用。

什么是__str__
?
__str__
方法旨在返回对象的人类可读字符串表示。当您在对象上使用print()
函数或str()
构造函数时,这就是显示的内容。

例如:
班级人: def __init __(自我,名称): self.name =名称 def __str __(self): 返回f“名为{self.name}的人” p =人(“爱丽丝”) 打印(P)#输出:名为Alice的人
- 当您想向用户展示一个看起来不错的字符串时,请使用
__str__
。 - 如果未定义
__str__
,则Python将退回到使用__repr__
。
什么是__repr__
?
__repr__
方法应该返回可用于重新创建对象的有效python表达式。对于开发人员而言,它比最终用户更重要。

它的外观是:
班级人: def __init __(自我,名称): self.name =名称 def __repr __(自我): 返回f“ person('{self.name}')” p =人(“爱丽丝”) 打印(reter(p))#输出:Person('Alice')
-
__repr__
的目的是清晰和明显。 - 理想情况下,您应该能够将
__repr__
的输出复制到代码中并重新创建对象。
关键差异
-
观众:
-
__str__
→用于用户(干净,可读) -
__repr__
→用于开发人员(完整,精确)
-
-
后备行为:
- 如果仅定义
__repr__
,它也将充当__str__
。 - 但是,如果仅存在
__str__
,则在调用repr()
时将不会使用它。
- 如果仅定义
-
用法上下文:
-
__str__
:print(obj)
或str(obj)
-
__repr__
:repr(obj)
或在评估表达式时的替补
-
有些要记住的事情:
- 您经常在实际项目中定义这两个 - 一个用于显示,一个用于调试/伐木。
- 一个好的经验法则:
__repr__
应该是您在日志中或调试期间可以看到的东西。 - 尝试使
__repr__
成为有效的表达式,以便您可以轻松地重现对象。
何时使用
如果您要记录或调试:
- 使用
__repr__
,因为它提供了更精确的信息。
如果您向用户显示数据或编写输出:
- 使用
__str__
。
您并不总是需要两者,但是定义它们都可以使您的课程更加有用和信息丰富。
基本上,请记住:
__str__
是给人们的, __repr__
是用于机器(或开发人员)的。
以上是'__str__'和`__repr__'python之间的区别的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undress AI Tool
免费脱衣服图片

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

UseSublimeText’sbuildsystemtorunPythonscriptsandcatcherrorsbypressingCtrl Baftersettingthecorrectbuildsystemorcreatingacustomone.2.Insertstrategicprint()statementstocheckvariablevalues,types,andexecutionflow,usinglabelsandrepr()forclarity.3.Installth

确保已安装Python并将其添加到系统PATH,通过终端运行python--version或python3--version验证;2.将Python文件保存为.py扩展名,如hello.py;3.在SublimeText中创建自定义构建系统,Windows用户使用{"cmd":["python","-u","$file"]},macOS/Linux用户使用{"cmd":["python3

要调试Python脚本,需先安装Python扩展并配置解释器,然后创建launch.json文件设置调试配置,接着在代码中设置断点并按F5启动调试,脚本将在断点处暂停,允许检查变量和单步执行,最终通过查看控制台输出、添加日志或调整参数等方式排查问题,确保环境正确后调试过程简单高效。

ClassmethodsinPythonareboundtotheclassandnottoinstances,allowingthemtobecalledwithoutcreatinganobject.1.Theyaredefinedusingthe@classmethoddecoratorandtakeclsasthefirstparameter,referringtotheclassitself.2.Theycanaccessclassvariablesandarecommonlyused

asyncio.Queue是用于异步任务间安全通信的队列工具,1.生产者通过awaitqueue.put(item)添加数据,消费者用awaitqueue.get()获取数据;2.每处理完一项需调用queue.task_done(),以便queue.join()等待所有任务完成;3.使用None作为结束信号通知消费者停止;4.多个消费者时,需发送多个结束信号或在取消任务前确保所有任务已处理完毕;5.队列支持设置maxsize限制容量,put和get操作自动挂起不阻塞事件循环,程序最终通过canc

yield关键字用于定义生成器函数,使其能暂停执行并逐个返回值,之后从暂停处恢复;生成器函数返回生成器对象,具有惰性求值特性,可节省内存,适用于处理大文件、流数据和无限序列等场景,且生成器是迭代器,支持next()和for循环,但无法倒回,必须重新创建才能再次迭代。

toAutomation formatemationalformatpytpythoncodeinvscode,installblackusingpipinstallblack,installtheofficialmicrosoftpythonextension,setblackastheformatterinsettings.jsonwith“ python.formatting.formatting.provider”

InstallSublimeTextandPython,thenconfigureabuildsystembycreatingaPython3.sublime-buildfilewiththeappropriatecmdandselectorsettingstoenablerunningPythonscriptsviaCtrl B.2.OrganizeyourprojectbycreatingadedicatedfolderwithPythonfilesandsupportingdocument
