Python - 面向对象编程 - __repr()__

时间:2021-09-12 01:23:45   收藏:0   阅读:32

为什么要讲 __repr__

 

代码栗子

class A:
    pass

    def __repr__(self):


a = A()
print(a)
print(repr(a))
print(str(a))


# 输出结果
<__main__.A object at 0x10e6dbcd0>
<__main__.A object at 0x10e6dbcd0>
<__main__.A object at 0x10e6dbcd0>

默认情况下,__repr__() 会返回和实例对象 <类名 object at 内存地址> 有关的信息

 

重写 __repr__ 方法

class PoloBlog:
    def __init__(self):
        self.name = "小菠萝"
        self.add = "https://www.cnblogs.com/poloyy/"

    def __repr__(self):
        return "test[name=" + self.name + ",add=" + self.add + "]"


blog = PoloBlog()
print(blog)
print(str(blog))
print(repr(blog))


# 输出结果
test[name=小菠萝,add=https://www.cnblogs.com/poloyy/]
test[name=小菠萝,add=https://www.cnblogs.com/poloyy/]
test[name=小菠萝,add=https://www.cnblogs.com/poloyy/]

只重写 __repr__ 方法,使用 str() 的时候也会生效哦

 

class PoloBlog:
    def __init__(self):
        self.name = "小菠萝"
        self.add = "https://www.cnblogs.com/poloyy/"

    def __str__(self):
        return "test[name=" + self.name + ",add=" + self.add + "]"


blog = PoloBlog()
print(blog)
print(str(blog))
print(repr(blog))


# 输出结果
test[name=小菠萝,add=https://www.cnblogs.com/poloyy/]
test[name=小菠萝,add=https://www.cnblogs.com/poloyy/]
<__main__.PoloBlog object at 0x10e2749a0>

只重写 __str__ 方法的话,使用 repr() 不会生效的哦!

 

str() 和 repr() 的区别

https://www.cnblogs.com/poloyy/p/15253032.html 

 

原文:https://www.cnblogs.com/poloyy/p/15250973.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!