-
引子
不说废话,Python 小白先上菜:
# Stu0.py class Stu(): def __init__(self, name, score): self.name = name self.score = score s1 = Stu('helen', 100) print s1 print Stu('ply', 100)
# 运行结果 <__main__.Stu instance at 0x7fa45d4e9560> <__main__.Stu instance at 0x7fa45d4e95a8>
像上面这样的输出太突兀了有没有!所以,有了下面的 str & repr 方法。
-
先来说一说
__str__
这个函数:# Stu1.py class Stu(): def __init__(self, name, score): self.name = name self.score = score def __str__(self): return 'className: %s' % self.name # 注意:这里使用的是 ":" def __repr__(self): return 'className = %s' % self.name # 注意:这里使用的是 "=" s1 = Stu('helen', 100) print s1 print Stu('ply', 100)
# 运行结果 className: helen className: ply
-
下面看看
__repr__
>>> class Stu(): ... def __init__(self, name, score): ... self.name = name ... self.score = score ... def __str__(self): ... return 'className: %s' % self.name ... def __repr__(self): ... return 'className = %s' % self.name ... >>> s1 = Stu('helen', 100) >>> s1 className = helen >>> Stu('ply', 100) className = ply
-
小节
str 输出的内容是给使用者看的;repr 输出的内容是给开发者看的,多用于调试。
和 print format 中的 %r 和 %s 有异曲同工之处。