1. __repr__
class Name:
    def __init__(self,name):
        self.name = name

Python中__repr__和__str__区别
上面打印类对象并不是很友好,显示的是对象的内存地址。
此时我们重构 __repr__

class Name:
    def __init__(self,name):
        self.name = name
    def __repr__(self):
        return 'Name: %s' % self.name

Python中__repr__和__str__区别
重构__repr__方法后,不管直接输出对象(面向开发者)还是通过print(面向用户)打印的信息都按我们__repr__方法中定义的格式进行显示了

  1. __str__
    此时我们尝试下重构__str__
class Name:
    def __init__(self,name):
        self.name = name
    def __str__(self):
        return 'Name: %s' % self.name

Python中__repr__和__str__区别
此时,直接输出对象(面向开发者)显示对象的内存地址,使用print输入对象显示的是友好提示。

  1. 总结
    如果要把一个类的实例变成 str,就需要实现特殊方法__str__()
    __repr____str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向开发者。

  2. 想要直接输出对象(面向开发者)和使用print输入对象都显示的是友好提示除了重构__repr__,还可以重构__str__实现。

class Name:
    def __init__(self,name):
        self.name = name
    def __str__(self):
        return 'Name: %s' % self.name
    __repr__ = __str__

Python中__repr__和__str__区别

相关文章: