38-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__

你可能感兴趣的:(38-python中 __str__和__repr__)