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



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

>
>
>
print
 (p)
(Person:Bob,male)
复制代码

但是当我们输入p的时候我们并不能显示出字符串

>
>
>
 p

<
__main__
.Person object at 0x035FC950
>

好像是__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__
>
>
>
 p = Person(
'
Bob
'
,
'
Male
'
)

>
>
>
 p
(Person:Bob,Male)
复制代码

这里我们在输入P的时候就不会显示出地址了。

Last updated