![85c87381f723529b5c93786be6362d12.png](https://i-blog.csdnimg.cn/blog_migrate/35a64915dbef124572f48acc43922750.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()
才有效。
就酱。