无聊的使用案例
关于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,那么看上去一点都不友好 。
classStudent:def__init__(self, name, age, score): self.name = name self.age = age self.score = score defread(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.name,s.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编程语言中str函数的用法 pythonstr函数怎么用】
文章插图
推荐阅读
- 解释append函数的作用和用法 append在Python里是什么意思
- 记叙文语言特点,python语言具有哪些特点
- 除号怎么输入,python中算术运算符有哪些
- pygame怎么用,python3.5怎么运行
- 0什么意思c语言,c语言中define是啥意思
- 计算机语言有哪些,计算机编程语言有哪几种
- php的学习方式 php是什么意思
- 视听语言中角度分为哪几类
- 详解20个函数使用方法 python中append什么意思
- 1415是什么意思