鱼C论坛

 找回密码
 立即注册
查看: 1209|回复: 9

[已解决]一个图书查询的问题

[复制链接]
发表于 2022-2-10 07:07:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class BookManager:

    authors = []
    def __init__(self):
        book1 = Book('撒哈拉的故事','三毛','我每想你一次,天上便落下一粒沙,从此便有了撒哈拉。')
        book2 = Book('梦里花落知多少','三毛','人人都曾拥有荷西,虽然他终会离去。')
        book3 = Book('月亮与六便士','毛姆','满地都是六便士,他却抬头看见了月亮。')
        self.books = [book1,book2,book3]
        self.authors.append(book1.author)
        self.authors.append(book2.author)
        self.authors.append(book3.author)
--------------------------------------------------------------------------以上代码都理解
def show_author_book(self):
        author = input('请输入想查询作家的名称:')
        if author in self.authors:
            print(author + '的作品有:')
            for book in self.books:
                if book.author == author:           #这里book.author的用法不太理解,请高手指点一下,谢谢
                    print(book)
        else:
            print('很可惜,我们暂时没有收录这位作者的作品')

最佳答案
2022-2-10 16:44:57

类中 books  和 authors 都是存储 book 和 authors 对象的列表,book 对象 有实例属性 author ,那么自然 book.author 就是调用该属性,返回此时 book 对象的作者名

从 show_author_book 函数上看这方法是用于显示用户输入的作家所有书籍作品,在  BookManager 类中有 authors 实例属性

authors 中存的都是各书作者,在 show_author_book 方法中首先判断 用户输入的作家是否在 authors 中
if author in self.authors:
    print(author + '的作品有:')
        for book in self.books:
            if book.author == author:           
                print(book)

若存在进入 if 代码快,进行用 for 循环遍历各个书籍对象,确定书籍对象的 作者 是否为 用户输入的作者

若等于用户输入的作者,则此时打印出此书籍对象,直到所有 Book 对象都被检索,程序打印出所有书籍的名称


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-10 08:28:38 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-10 09:21:22 From FishC Mobile | 显示全部楼层

回帖奖励 +1 鱼币

那你肯定是有一个
class Book
在__init__肯定是有self.name   self.author 和self.words这样的属性,这里book.author的用法就要参考Book这个class了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-10 09:42:29 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-10 10:33:01 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-10 10:49:49 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-10 11:44:26 | 显示全部楼层
如果只有这个py文件我不会报错么?
为啥我感觉这样写会报错 book 下面没有authoe 属性呀 会不会是bookmanager
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-10 11:56:28 | 显示全部楼层
正在写bug 发表于 2022-2-10 11:44
如果只有这个py文件我不会报错么?
为啥我感觉这样写会报错 book 下面没有authoe 属性呀 会不会是bookmana ...

他只是发了一个类的定义而已,那里很明显还有一个Book类
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-2-10 16:44:57 | 显示全部楼层    本楼为最佳答案   

类中 books  和 authors 都是存储 book 和 authors 对象的列表,book 对象 有实例属性 author ,那么自然 book.author 就是调用该属性,返回此时 book 对象的作者名

从 show_author_book 函数上看这方法是用于显示用户输入的作家所有书籍作品,在  BookManager 类中有 authors 实例属性

authors 中存的都是各书作者,在 show_author_book 方法中首先判断 用户输入的作家是否在 authors 中
if author in self.authors:
    print(author + '的作品有:')
        for book in self.books:
            if book.author == author:           
                print(book)

若存在进入 if 代码快,进行用 for 循环遍历各个书籍对象,确定书籍对象的 作者 是否为 用户输入的作者

若等于用户输入的作者,则此时打印出此书籍对象,直到所有 Book 对象都被检索,程序打印出所有书籍的名称


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-10 21:37:33 | 显示全部楼层
Twilight6 发表于 2022-2-10 16:44
类中 books  和 authors 都是存储 book 和 authors 对象的列表,book 对象 有实例属性 author ,那么自然 ...

谢谢,很详细了,不过我可能基础没打好,让我再消化一下吧,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 07:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表