项目实操:流浪图书馆

在几次的项目练习中对面向过程和面向对象有一点点体会,从体会来说,面向过程更符合一般问题解决的过程,不断缩短问题到目标的距离,这个过程中主要使用已有的工具(函数,已有或定义)。面向对象更像是弄清楚目标之后,自己定义可实现目标的工具(类),工具之间也有联系,定义类的方法的思维过程和面向对象编程类似,我认为这是两种方法的联系。
以上是一个初学者的体会,希望以后可以理解更深!再接再厉!

练习1

class Book:
 
    def __init__(self, name, author, comment, state = 0):
        self.name = name
        self.author = author
        self.comment = comment
        self.state = state
 
# 创建一个Book类的子类 FictionBookci
class FictionBook(Book):
    def __init__(self,name,author,comment,type='虚构类'):
        self.type=type **#此处应该注意type作为新增属性在子类初始化方法中需定义,执行赋值语句**
        Book.__init__(self,name,author,comment,state=0)
    # 继承并定制父类的初始化方法,增加默认参数 type = '虚构类',让程序能够顺利执行。

    def __str__(self):
        status = '未借出'
        if self.state == 1:
            status = '已借出'
        return '类型:%s 名称:《%s》 作者:%s 推荐语:%s\n状态:%s ' % (self.type, self.name, self.author, self.comment, status)


book = FictionBook('囚鸟','冯内古特','我们都是受困于时代的囚鸟')
print(book)

'''
让打印的结果为:
类型: 虚构类 名称:《囚鸟》 作者:冯内古特 推荐语:我们都是受困于时代的囚鸟
状态:未借出
'''

练习2:完善show_author_book方法

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):
        status = '未借出'
        if self.state == 1:
            status = '已借出'
        return '名称:《%s》 作者:%s 推荐语:%s\n状态:%s ' % (self.name, self.author, self.comment, status)


class BookManager:
    authors = []

    # 创建一个存放作者名的列表
    def __init__(self):
        book1 = Book('撒哈拉的故事', '三毛', '我每想你一次,天上便落下一粒沙,从此便有了撒哈拉。')
        book2 = Book('梦里花落知多少', '三毛', '人人都曾拥有荷西,虽然他终会离去。')
        book3 = Book('月亮与六便士', '毛姆', '满地都是六便士,他却抬头看见了月亮。')
        self.books = [book1, book2, book3]
        # 将三个实例放在列表books里
        self.authors.append(book1.author)
        self.authors.append(book2.author)
        self.authors.append(book3.author)
        # 将三个实例的作者名添加到列表author里

    def menu(self):
        while True:
            print('1.查询书籍')
            choice = int(input('请输入数字选择对应的功能:'))
            if choice == 1:
                self.show_author_book()
                # 调用方法
            else:
                print('感谢使用!')
                break

    def show_author_book(self):
        author = input('你想找谁的书呢?')
        # 请在此处补充该方法的代码
        if author not in self.authors:
            print('很可惜,我们暂时没有收录这位作者的作品')
        else:
            print(author+'的作品有:')
            for book in self.books:
                if book.author == author:
                    print(book) #此处的方法使用和之前输入演员名查找演员主演的电影的方法一致,

manager = BookManager()
manager.menu()

'''
一个思路:
1. 先用条件判断语句判断该作者在不在列表authors里,如果不在就打印'很可惜,我们暂时没有收录这位作者的作品'
2. 如果在,就遍历列表books的每个实例,当实例属性author与输入的作者名相等,就打印该实例      
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值