定义一个Student类,打印它的实例
class Student :
def __init__(self, name):
self._name = name
def main():
s = Student('小明')
print(s)
if __name__ =='__main__':
main()
输出
<__main__.Student object at 0x10cac5400>
,要想打印一个字符串,需用到 __str__(),
class Student :
def __init__(self, name):
self._name = name
def __str__(self):
return 'Student object (name: %s)' %self._name
def main():
s = Student('小明')
print(s)
if __name__ =='__main__':
main()
输出,
Student object (name: 小明)
如果直接敲变量不用print,打印出来的还是:<__main__.Student object at 0x10cac5400>
因为直接显示变量调用的不是__str__(),而是__repr__(),两者的区别是__str__()返回用户看到的字符串,而__repr__()返回程序开发者看到的字符串,也就是说,__repr__()是为调试服务的。
解决办法是再定义一个__repr__()。但是通常__str__()和__repr__()代码都是一样的,所以,有个偷懒的写法:
class Student:
def __init__(self, name):
self._name = name
def __str__(self):
return 'Student object (name: %s)' %self._name
__repr__ =__str__
def main():
s = Student('小明')
print(s)
if __name__ =='__main__':
main()
网友评论