def __init__(self)是什么意思_[Python] 类的__str__和__repr__方法

85c87381f723529b5c93786be6362d12.png

好久没撸代码了,最近一直在干本职的工作(看RFC,雾……),这两天在复习了下,然后了解到了两个比较有意思的类方法,它们是Python已经定义好的,有特定的意义,我们先来看它们能干什么......

知乎视频​www.zhihu.com

如视频所示,我写了两个类,一个MyStrClass,一个MyReprClass,嗯,名字瞎起的。

这两个类的代码如下,很简单,只是为了测试下__str____repr__方法

class MyStrClass(object):

    def __init__(self, data):
        self.data = data

    def __str__(self):
        return '__str__方法测试: ' + str(self.data)

class MyReprClass(object):

    def __init__(self, data):
        self.data = data

    def __repr__(self):
        return '__repr__方法测试: ' + str(self.data)

两个类都接受一个参数,data

对于MyStrClass的实例my_str_inst来说,如果直接在交互式环境里输入示例,会默认打印对象的id值,而如果使用print函数,才会触发__str_方法所实现的内容,一个人类阅读起来比较友好的输出。

对于MyReprClass的实例my_repr_inst来说,无论是直接在交互式环境里输入实例,还是使用print函数,都会触发__repr_方法所实现的内容。

简而言之,__repr_方法不考虑代码运行的外部环境,而__str__仅仅在你调用print()或者str() 才有效。

就酱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值