__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