date: 2021-06-30title: Python中的str和repr #标题
tags: #标签
categories: python # 分类
参考:老男孩教育。
str
在打印一个对象的时候,调用的是__str__方法;
在使用%s拼接一个对象的时候,调用的是__str__方法;
在str一个对象的时候,调用的是__str__方法;
# 示例一:class Course:def __init__(self, name, price, period):self.name = nameself.price = priceself.period = perioddef __str__(self):return ', '.join([self.name, str(self.price), self.period])# 注意,上面return的返回值只能是字符串类型的a = Course('python', 18000, '5 month')print(a) # 假如类中没有定义__str__方法,那么返回值就是一个内存地址# 如果有__str__方法,则返回__str__方法中定义的返回值# 示例二class Clas:def __init__(self):self.stdents = []def append(self, name):self.stdents.append(name)def __str__(self):return str(self.stdents)clas = Clas()clas.append('张三')clas.append('李四')clas.append('王五')print(clas)# 如果类中没有定义__str__方法,则会打印如下:print(clas) # <__main__.Clas object at 0x000001AAC8127CF8>
repr
class Clas:def __init__(self):self.stdents = []def append(self, name):self.stdents.append(name)def __repr__(self):return str(self.stdents)def __str__(self):return 'aaa'clas = Clas()clas.append('张三')print(str(clas)) # aaaprint(repr(clas)) # ['张三']print(f'打印{clas}') # 打印aaaprint('打印%s' % (clas)) # 打印aaaprint('打印%r' % (clas)) # 打印['张三']'''当我们打印一个对象,用%s进行字符串拼接或者str(对象)总是调用这个对象的__str__方法如果找不到__srt__,就调用__repr__方法__repr__不仅是__str__的替代品,还有自己的功能用%r进行字符串拼接或者用repr(对象)的时候,总是调用这个对象的__repr__方法'''
