gpt4 book ai didi

python - 我没有正确使用setter方法吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:59 27 4
gpt4 key购买 nike

所以我必须制作一个程序,允许用户使用类和类之间的继承从图书馆“借出”书籍和期刊。有一个名为 LibraryItems 的主类,其子类为 BookPeriodical。 我将提供一个我遇到的问题的示例:

这是 Book 子类:

class Book(LibraryItem):
def __init__(self, call_num):
LibraryItem.__init__(self, call_num)
self.__book_list = None

def set_book_list(self, lis):
self.__book_list = lis

def get_book_list(self):
return self.__book_list

这里是 Controller 类中的一个方法,它从输入文件读取文本并将其存储在列表中,main() 方法使用它来运行程序:

def read_input(self, filename):
book = Book(LibraryItem)
period = Periodical(LibraryItem)
bl = []
pl = []
with open(filename, "r") as line:
line.readline()
line.readline()
for record in line:
fields = [f.strip() for f in record.split(",")]
if fields[0] == "B":
bl.append(fields)
else:
pl.append(fields)
book.set_book_list(bl)
period.set_period_list(pl)

这是我的问题,如果我在 read_input 方法中调用 BookPeriodical getter 方法,它们打印得很好。但是,如果我在任何其他方法中调用这些 getter 方法,就好像 setter 方法不起作用并且打印 None 。

创建这些子类的新实例是否会将 self.__book_list 变量重新初始化为 None ?这是我唯一能想到的问题,但我什至不确定这是真的。一些帮助将不胜感激,谢谢!

最佳答案

如果您使用 setter 的唯一位置是在 read_input() 函数中(这是我在示例中看到的唯一位置),并且您正在该函数之外调用 getter ,问题可能是您在调用 set_book_list() 后未返回图书或期间。

值得一提的是,结构似乎不对。为什么一本书一开始就有一个书单?也许 Controller 应该有一个书籍列表,并且应该从 Book 类中删除该成员。

关于python - 我没有正确使用setter方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60197530/

27 4 0
文章推荐: c# - 无法删除 arraylist 中的项目
文章推荐: html - 如何在不弄乱边框的情况下将
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com