新语法知识:__str__(self)
解释一下:只要在类中定义了__str__(self)
方法,那么当使用print
打印实例对象的时候,就会直接打印出在这个方法中return
的数据。
来个代码解释一下:
- class Book:
- def __init__(self, name, author, comment, state = 0):
- self.name = name
- self.author = author
- self.comment = comment
- self.state = state
- def show_info(self):
- if self.state == 0:
- status = '未借出'
- else:
- status = '已借出'
- return '名称:《%s》 作者:%s 推荐语:%s\n状态:%s ' % (self.name, self.author, self.comment, status)
- book1 = Book('像自由一样美丽', '林达', '你要用光明来定义黑暗,用黑暗来定义光明')
- # 传入参数,创建实例
- print(book1.show_info())
- #调用实例方法show_info(),打印出返回值
如果你把这里的show_info改成__str__(self)后,代码是这样的:
- class Book:
- def __init__(self, name, author, comment, state = 0):
- self.name = name
- self.author = author
- self.comment = comment
- self.state = state
- def __str__(self):
- if self.state == 0:
- status = '未借出'
- else:
- status = '已借出'
- return '名称:《%s》 作者:%s 推荐语:%s\n状态:%s ' % (self.name, self.author, self.comment, status)
- book1 = Book('像自由一样美丽','林达','你要用光明来定义黑暗,用黑暗来定义光明')
- # 传入参数,创建实例对象
- print(book1)
- # 直接打印对象即可,不能写成print(book1.__str__())
这就是这个方法的好处,你可以利用这个方法的返回值直接打印对象。
后面还会更新作业报错的问题,时间不够23333我晚上再说
联系客服