2. repr函数重载
repr(obj)函数
repr(obj) 返回一个附合 Python 语法规则且能代表此对象的表达式字符串。
通常:
eval(repr(obj)) == obj # 结果为True。
自定义的类的repr(obj)函数通常返回该类的构造函数表达式的字符串或字面值。
repr(obj) 函数的重载
内置函数
对应的特殊方法
说明
repr(obj)
__repr__()
返回对象的字面值的字符串表示(通常可用于
eval()
重建)示例
# repr(obj) 函数重载 示例
class Human:
def __init__(self, name, age):
self.name, self.age = name, age
def __str__(self):
return f'{self.age}岁的{self.name}'
def __repr__(self):
return 'Human('+repr(self.name)+ ',' + repr(self.age) + ')'
h1 = Human('张三', 18)
print(h1)
s1 = repr(h1) # s1 = "Human('张三',18)"
print(s1)
h2 = eval(s1)
print(h2)
repr(obj)函数调用方法说明
- repr(obj) 函数先查找
obj.__repr__()
方法,调用此方法并返回结果。 - 如果
obj.__repr__()
方法不存在,则调用 object 类的对象的__repr__()
方法显示<__main__.xxxClass object at 0x102a8ea20>
格式的字符串。
str(obj)函数调用方法说明
- str(obj)函数先查找
obj.__str__()
方法,调用此方法并返回结果。 - 如果
obj.__str__()
方法不存在,则调用obj.__repr__()
方法并返回结果。 - 如果
obj.__repr__()
方法不存在,则调用 object 类的对象的__repr__()
方法显示<__main__.xxxClass object at 0x102a8ea20>
格式的字符串。
printf风格的字符串格式化中的转换符
转换符
含意
'r'
使用 repr() 转换任何 Python 对象。
's'
使用 str() 转换任何 Python 对象。
示例
# printf风格的字符串格式化的转换符
print('%r' % h1) # 打印:Human('张三',18)
print('%s' % h1) # 打印:18岁的张三