Python|python3|str和repr怎么用?看过来了,这才是真正的使用场景

文章图片
文章图片
无聊的使用案例关于str和repr , 网上有很多的介绍 , 个人觉得那并非在编程中常常使用的场景 。 比如下面的例子 。
region = \"CHINA\"
print(region)
print(str(region))
print(repr(region))
#运行结果
\"C:\\Program Files\\Python38\\python3.exe\" D:/python/python_210710/exercise_03/str_repr.py
CHINA
CHINA
'CHINA'
编码的是为了方便人来阅读的 , 所以呢 , 个人觉得对于一个变量来说 , 它是什么格式 , 值是什么 , print和type就可以给我们答案 , 这里并不需要使用什么str和repr的转换了 , 多此一举 。
那么真正的str和repr有什么用呢?他们又是
使用场景__str__()函数:将值转化为适于人阅读的字符串的形式
__repr__()函数:将值转化为供解释器读取的字符串形式
这里为什么会这样讲呢?需要解释一下的 。
Python是对象编程语言 , 一切皆对象 。 所以 , 编程中很多时候都是用的对象的思想 , 那么对象本身和机器的交互由解释器完成 , 那么对象对于我们而言 , 如果知识一个object , 那么看上去一点都不友好 。
class Student:
def __init__(self name age score):
self.name = name
self.age = age
self.score = score
def read(self):
pass
s =Student(\"小明\" 12 88)
print(s)
\"C:\\Program Files\\Python38\\python3.exe\" D:/python/python_210710/exercise_03/str_repr.py
<__main__.Student object at 0x000001AFBC055640>
这是什么鬼?<__main__.Student object at 0x000001AFBC055640> , 仅仅就知道这是一个Student的对象 , 它包含什么 , 其实一点都不知道 。
所以为了解决这个问题 , 特别需要知道的就是__str__()和__repr__()
那下面这样的格式看起来是不是好一点 。
这样的格式是不是更好呢?
同样的是打印这个学生对象s , 我们就可以很清楚
怎么用呢?使用__str__() 或者 __repr__()中的任意一个方法 , 在定义类中加上这样的转化方式 , 不需要手动地去print(s.names.age)这样的方法 , 我们只需要print(s)就可以看到细节 。
很明显 , 通过上面的演示 , __str__的可读性更强 , 而__repr__的返回结果更具有准确性 , 更加的适合开发者 。
我们在写类的时候 , 最好至少添加一个__repr__方法 , 来保证类到字符串的转换具有自定义的有效性 。
__str__是可选的 , 因为在默认情况下 , __str__方法默认实现调用的是__repr__方法 , 所以在对象转字符串时候 , 找到底层str方法之后 , 会调用重写的__repr__方法
需要注意的是 , 如果__str__和__repr__同时存在的时候 , __str__的结果会被显示 。
同时注意这两个方法的返回必须是字符串 , 否则会抛出异常 。
所以记住了 , 以后再定义类的时候 , 初始化函数之后 , 一定要记得加一个__repr__了 。
def __repr__(self):
return (\"Student(%s %s %s)\") % (self.name self.age self.score)
return (f\"Student({self.name {self.age {self.score)\")
- Python|十年质保、3400MB/S!279元买512GB NVMe高速固态硬盘
- 格力电器|不要再说Python难了,按照这个学习路线,四周速成Python
- Python|华为再造新车!问界M7揭下外企的遮羞布,余承东:超越百万豪车
- Python|OPPO A96可以升级ColorOS 12了,我看谁还说入门机只管生不管养?
- Python|什么是二级分销模式?分销商城小程序开发源码解析
- Python|iPhone手机哪里买比较靠谱?记住这五个渠道可避免上当受骗
- Python|个个都是真品质,2000元左右换机,不要错过这三款手机!
- Python|太LOW了,还在用皮老虎,万元级的微单镜头怎么也得配上电吹风
- 美团|Python 自学网站 Python Code Example
- Python|低功耗笔记本的超薄小搭档:CukTech超薄65W氮化镓充电器
