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 = name
self.price = price
self.period = period
def __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)) # aaa
print(repr(clas)) # ['张三']
print(f'打印{clas}') # 打印aaa
print('打印%s' % (clas)) # 打印aaa
print('打印%r' % (clas)) # 打印['张三']
'''
当我们打印一个对象,用%s进行字符串拼接或者str(对象)总是调用这个对象的__str__方法
如果找不到__srt__,就调用__repr__方法
__repr__不仅是__str__的替代品,还有自己的功能
用%r进行字符串拼接或者用repr(对象)的时候,总是调用这个对象的__repr__方法
'''