str()与repr()和__str__与__repr__的区别

1.str()与repr()的区别

在python中,str()与repr()都可以使实现类型的转换,而我们最常用的是str(),什么时候repr使用?
str():将值转化为适于人阅读的字符串的形式(给人看)
repr():将值转化为供解释器读取的字符串形式(给机器看)

将 float 转换成 str
float1 = 3.14
print('原型:', float1, type(float1))

# str()转换
str1 = str(float1)
print('str()转换:', str1, type(str1))

# repr()转换
repr1= repr(float1)
print('repr()转换:', repr1, type(repr1))

将小数转换成字符串

这里可以看出str与repr转换都是一样的

将str 转换成 str
str = '3.14'
print('原型:', str, '类型:', type(str), '长度:',len(str))

# repr()转换
repr1= repr(str)
print('repr()转换:', repr1, '类型:',  type(repr1),'长度:', len(repr1))

# str()转换
str1 = str(str)
print('str()转换:', str1, '类型:',  type(str1),'长度:', len(str1))

在这里插入图片描述
原来那个字符串是:3.14 长度是4,因为这是把‘’个隐藏了
而repr()转换是:‘3.14’,长度是6,这是在原来那个字符串的基础上再加了一对引号,类似于:“ ‘3.14’ ”这样。
而函数str()报错

str的转换:
str转换
repr转换
在这里插入图片描述

2.__str__与__repr__的区别

我们知道python中有一类特殊的方法,叫做魔法方法。

  • 方法定义的实收以两个下划线开头和两个下划线结尾。
  • 一般不需要我们手动调用,在满足某一个条件的时候自动调用
    然而,其中的__str__和__repr__都是用来描述对象的信息,那为什么要定义这两个方法呢?

__ str __:面向于人,注重可读性
__ repr __:面向于机器,注重准确性

实例

__ str__ 实例

class A(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f'name:{self.name},age:{self.age}'


my_list = [A('张三', 8), A('李四', 9)]
print(my_list)

在这里插入图片描述

__ repr __:实例

class A(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f'name:{self.name},age:{self.age}'


my_list = [A('张三', 8), A('李四', 9)]
print(my_list)

在这里插入图片描述
通过简单的对⽐,我们发现,直接输出对象,调⽤的__repr__ ⽅法。
另外还需要注意的是,如果将对象放在容器中进⾏输出,调⽤的是__repr__ ⽅法。

总结

Python 中的 strrepr ⽅法都是⽤来显示的,即描述对象信息的。
如果重写__str__ ⽅法,也重写了 repr ⽅法时,则默认调⽤ __repr__⽅法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值