str

    我们先定义一个 Student 类,打印一个实例:

    >>> class Student(object):

    … def init(self, name):

    … self.name = name



    >>> print(Student('Michael'))

    <main.Student object at 0x109afb190>

    打印出一堆 &lt;main.Student object at 0x109afb190&gt; ,不好看。

    怎么才能打印得好看呢?只需要定义好 str() 方法,返回一个好看的字符串就可以了:

    >>> class Student(object):

    … def init(self, name):

    … self.name = name

    … def str(self):

    … return 'Student object (name: %s)' % self.name



    >>> print(Student('Michael'))

    Student object (name: Michael)

    这样打印出来的实例,不但好看,而且容易看出实例内部重要的数据。

    但是细心的朋友会发现直接敲变量不用 print ,打印出来的实例还是不好看:

    >>> s = Student('Michael')

    >>> s

    <main.Student object at 0x109afb310>

    这是因为直接显示变量调用的不是 str() ,而是 repr() ,两者的区别是 str() 返回用户看到的字符串,而 repr() 返回程序开发者看到的字符串,也就是说, repr() 是为调试服务的。

    解决办法是再定义一个 repr() 。但是通常 str() repr() 代码都是一样的,所以,有个偷懒的写法:

    class Student(object):

    def init(self, name):

    self.name = name

    def str(self):

    return 'Student object (name=%s)' % self.name

    repr = str