首页 > 其他分享 >魔法函数 __repr__() 和 __str__()的区别

魔法函数 __repr__() 和 __str__()的区别

时间:2023-07-12 23:11:43浏览次数:35  
标签:__ Point self repr str 字符串

 1 '''
 2 __repr__() 和 __str__() 都是 Python 中的特殊方法,用于定义对象的字符串表示形式。它们之间的区别如下:
 3     1. __repr__(self):返回一个字符串,用于表示对象的“官方”字符串表示形式。这个字符串应该是可以用来重新创建对象的,并且应该尽可能准确和详细。
 4       一般来说,__repr__() 方法应该返回一个能够通过 eval(repr(obj)) 将字符串转换为等价的对象的表达式。
 5     2. __str__(self):返回一个字符串,用于表示对象的“友好”字符串表示形式。这个字符串主要用于显示给用户,应该易于阅读和理解。
 6       通常情况下,__str__() 方法应该返回一个更简洁、可读性高的字符串。
 7 '''
 8 
 9 
10 class Point:
11     def __init__(self, x, y):
12         self.x = x
13         self.y = y
14 
15     def __repr__(self):
16         return f"Point({self.x}, {self.y})"
17 
18     def __str__(self):
19         return f"({self.x}, {self.y})"
20 
21 
22 p = Point(3, 4)
23 print(repr(p))  # 输出:Point(3, 4)
24 print(str(p))  # 输出:(3, 4),注释掉__str__方法,输出: Point(3, 4)
25 '''
26 定义了一个 Point 类,并重载了 __repr__() 和 __str__() 方法。__repr__() 方法返回的字符串是 Point(3, 4),用于表示对象的“官方”字符串表示形式。
27 __str__() 方法返回的字符串是 (3, 4),用于表示对象的“友好”字符串表示形式。
28 
29 当我们使用 repr(p) 或 str(p) 打印对象时,实际上会自动调用相应的特殊方法,并输出其返回的字符串。
30 
31 需要注意的是,如果只实现了 __repr__() 方法而没有实现 __str__() 方法,那么在调用 str(obj) 的时候,Python 会使用 __repr__() 方法来代替。
32 '''

 

标签:__,Point,self,repr,str,字符串
From: https://www.cnblogs.com/allenxx/p/17549137.html

相关文章

  • 第一章 机械运动
     1.1长度和时间的测量         ......
  • GPT-4镜像来了,体验核心能力
    1月份开始,chatgpt开始火上天了。但其实很多人都不知道它真正的能力和魅力在哪里。甚至有人不停的问他是男的女的,多大岁数,叫啥名字,然后问了几个无聊的闲聊问题后,觉得这个AI好像也没什么厉害的。正所谓是,提问者有多厉害,这个模型就会有多厉害。我把ChatGPT的核心能力归结为三点:......
  • “SecureCRT” 意外退出
    打开终端工具输入如下命令:xcode-select--install签名1、打开终端工具输入并执行如下命令:sudocodesign--force--deep--sign- 文件位置(直接将应用拖进去即可)(注意最后一个-与文件位置中间有一个空格)正常情况下只有一行提示,即成功:/文件位置:replacingexistingsignatur......
  • 服务器基础
    @目录第二章服务器基础1服务器介绍1.1什么是服务器1.2服务器发展历程1.3服务器的类型1.4服务器硬件介绍1.4.1服务器的硬件结构1.4.2CPU1.4.3内存1.4.4硬盘1.4.5RAID卡1.4.6网卡1.4.7电源和风扇模块2服务器关键技术2.1BMC介绍2.2BIOS2.2.1BIOS简介总结第二章服......
  • gpt4和chatGPT的区别
    ​ 一觉醒来,万众期待的GPT-4,它来了! OpenAI老板SamAltman直接开门见山地介绍说:这是我们迄今为止功能最强大的模型!​有多强?根据OpenAI官方的介绍,GPT-4是一个超大的多模态模型,也就是说,它的输入可以是文字(上限2.5万字),还可以是图像。(看图)手套掉下去会怎样?它会掉到木板......
  • vue-router
    路由理解:一个路由(route)就是一组映射关系(key-value),多个路由需要路由器(router)进行管理。前端路由:key是路径,value是组件。1.基本使用1.安装vue-router,命令:npmivue-router2.应用插件:Vue.use(VueRouter)3.编写router配置项://引入VueRouterimportVueRouterfro......
  • 如何使用Python制作交互式股票K线图?
    如何使用Python制作交互式股票K线图?如何使用Python制作交互式股票K线图?-知乎(zhihu.com)州的先生  在之前的文章中,我们介绍了使用PyQtGraph在PyQt5中绘制股票K线图:PythonGUI教程(十三):在GUI中使用pyqtgraph绘图库​zmister.com/archives/187.html以及使......
  • 欧姆龙CJ系列PLC以太网通讯处理器欧姆龙cp2e以太网通讯
    捷米特JM-ETH-CJ转以太网模块是一款经济型的以太网通讯处理器,是为满足日益增多的工厂设备信息化需求(设备网络监控和生产管理)而设计,用于欧姆龙CJ1/CJ2/CS1系列PLC的以太网数据采集,非常方便构建生产管理系统。 捷米特JM-ETH-CJ转以太网模块采用即插即用设计,不占用PLC通讯口,即编......
  • 面向过程&面向对象
    面向过程&面向对象语言的进化发展跟生物的进化发展其实是一回事,都是”物以类聚”。相近的感光细胞聚到一起变成了我们的眼睛,相近的嗅觉细胞聚到一起变成了我们的鼻子。语句多了,我们将完成同样功能的相近的语句,聚到了一块儿,便于我们使用。于是,方法出现了!变量多了,我们将功能相近......
  • Java 封装
    Java封装1.封装封装就是把抽象的数据和方法进行封装,数据在内部通过授权的方法来进行数据的操作,例如遥控器通过按钮对电视机的操作。封装的好处:隐藏实现细节校验并保护数据的安全封装的三步骤:对属性进行私有化设置公共的set方法设置该属性,可在内部进行业务逻辑判断......