如何解决从初始菜单python笔记本应用创建子菜单
我在研究继承和类构建时正在制作一个笔记本应用程序,我想知道是否有更好的方法可以从第一个菜单创建第二个菜单(尚无GUI,只有命令行)。我们从第一个菜单开始,输入“ 3”将我们带到另一个菜单。第二个菜单是一类,几乎是第一个菜单的重复项,唯一的区别是方法的功能/名称。我想知道是否可以让第二个菜单成为原始菜单类的子菜单,从而避免代码重复?
这是第一个菜单的代码,第二个菜单类重复了这些代码:
"""First menu"""
class Start:
def __init__(self):
self.page = Page()
self.choices = {
"1": self.write,"2": self.erase,"3": self.show,"4": self.quit,}
def display_menu(self):
"""print some options for the user to select"""
def run(self):
"""Keep display menu running"""
while True:
self.display_menu()
def show(self):
"""call the second menu,which is a class duplicating
the code of this first menu class"""
SecondMenu().run_menu()
if __name__ == '__main__':
Start().run()
要从第二个菜单返回第一个菜单,第二个菜单中的back方法将调用第一个菜单
"""Second Menu"""
class SecondMenu:
...
...
...
def back(self):
Start().run()
先谢谢了。让我知道是否需要进一步说明,我是oop原理的新手。
解决方法
如果将无限循环移至主程序,则可以考虑在每次迭代中实例化并向用户展示一个新(或现有)菜单,直到他从主菜单中选择Q(uit)
。
然后,您可以仅使用基础知识来定义基类Menu
。之后,您可以考虑一个MainMenu
子类,以及所需的其他菜单。
菜单不需要与用户交互,但需要与程序交互。您的程序基本上是一个循环,要求用户提供菜单选项。
如果您想与用户或其他系统进行交互的其他方式,并且仍然想重用这些菜单,则这种隔离很有用。
让菜单在可能的情况下运行所有内容,看起来有点像菜单过度设计。
您可能还喜欢标准库中的cmd
模块。它也是面向对象的。不过,您必须阅读documentation并遵守其规则。您将在其中找到示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。