object类有一个__str__()
方法,用于返回一个"对象的描述",对应于内置函数str()
,常常用于print()
方法,帮助咱们查看对象的信息。
由于__str__()
默认在object类中定义,因此子类能够重写这个方法。 python
不一样语言中对应的不一样的方法名:git
__str__()
方法toString()
方法__toString()
方法__str__()
默认定义在类object
当中。github
def __str__(self, *args, **kwargs): # real signature unknown """ Return str(self). """ pass
示例代码:markdown
class Student(object): pass class Person(object): def __init__(self, name, age): self.name = name self.age = age def __str__(self): return "名字:{0},年龄:{1}".format(self.name, self.age) s1 = Student() print(s1) print("--" * 20) p1 = Person("聂发俊", 100) print(p1)
运行结果:ide
<__main__.Student object at 0x0000015E99B5F3C8> ---------------------------------------- 名字:聂发俊,年龄:100
程序说明:函数
__str__()
也直接沿用,因此打印内容格式以下:<模块名.类名 被继承类名 at 内存地址>
的格式__str__()
,属于子类重写父类方法,采用子类的__str__()
方法,因此执行打印的时候,输出:名字:聂发俊,年龄:100
.__str__
和__repr__
区别str()
函数和__str__
在平常的开发看的不少,可是可能不多人会注意__repr__
,这两个很接近,可是有一些细微的差异。
相同点: 两个都是打印输出功能的函数
不一样点: __str__
是面向用户显示的,在IDE和命令行都出现,很常见。__repr__
是面向程序显示,只出如今命令行,不多见。
示例代码:命令行
>>> class Person: ... def __init__(self, name, age): ... self.name = name ... self.age = age ... def __str__(self): ... return "__str__:{0},{1}".format(self.name, self.age) ... def __repr__(self): ... return "__repr__:{0},{1}".format(self.name, self.age) ... >>> p1 = Person("niefajun", 100) >>> p1 __repr__:niefajun,100 >>> print(p1) __str__:niefajun,100
程序说明:code
Person
,包含两个实例属性name
和age
,另外重写了__str__(self)
和__repr__(self)
两个方法,而且实例化对象p1>>> p1
的时候,因为在命令行环境,这个时候会执行__repr__(self)
,完成打印功能,因此显示:__repr__:niefajun,100
,而当使用print(p1)
至关因而给用户看的,会调用__str__(self)
方法,因此输出:__str__:niefajun,100
。
注意:
在python文件中使用的都是__str__
备注:
更多精彩博客,请访问: 聂发俊的技术博客
对应视频教程,请访问: python400
完整markdown笔记,请访问: python400_learn_github