Python中__str__和__repr__

如果要把一个类的实例变成 str,就需要实现特殊方法str():

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
    def __str__(self):
        return '(Person: %s, %s)' % (self.name, self.gender)

现在,在交互式命令行下用 print 试试:

>>> p = Person('Bob', 'male')
>>> print p
(Person: Bob, male)

但是,如果直接敲变量 p:

>>> p

似乎str() 不会被调用。

因为 Python 定义了str()和repr()两种方法,str()用于显示给用户,而repr()用于显示给开发人员。

有一个偷懒的定义repr的方法:

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

来自慕课网,廖雪峰老师

你可能感兴趣的:(Python中__str__和__repr__)