从初始菜单 python 笔记本应用创建子菜单
Creating a sub-menu from initial menu python notebook app
我在研究继承和class构建时正在制作笔记本应用程序,我想知道是否有更好的方法可以从第一个菜单创建第二个菜单(还没有 GUI,只是命令行)。我们从第一个菜单开始,输入“3”将我们带到另一个菜单。第二个菜单是 class,与第一个菜单几乎相同,唯一的区别是方法 functionality/names。我想知道我是否可以将第二个菜单作为原始菜单的子菜单-class 以避免代码重复?
这是第一个菜单的代码,第二个菜单-class 重复:
"""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()
要从第二个菜单返回到第一个,第二个菜单中的返回方法调用第一个菜单
"""Second Menu"""
class SecondMenu:
...
...
...
def back(self):
Start().run()
提前致谢。如果需要更多说明,请告诉我,我是 oop 原则的新手。
如果将无限循环移至主程序,您可以考虑在每次迭代中实例化并向用户呈现一个新的(或现有的)菜单,直到他从主菜单中选择 Q(uit)
。
然后你可以定义一个基础 class Menu
只有基础。之后,您可以考虑 MainMenu
sub-class,以及您需要的任何更多菜单。
菜单不需要与用户交互,而是与您的程序交互。您的程序基本上是一个循环,要求用户提供菜单选项。
如果您想用其他方式与用户或其他系统交互,但您仍想re-use这些菜单,这种隔离会很有用。
菜单 运行 一切都来自他们自己,虽然可能,但看起来有点像菜单过度设计。
您可能还喜欢标准库中的 cmd
模块。也是object-oriented。不过,您必须阅读 documentation 并遵守其规则。您会在那里找到示例。
我在研究继承和class构建时正在制作笔记本应用程序,我想知道是否有更好的方法可以从第一个菜单创建第二个菜单(还没有 GUI,只是命令行)。我们从第一个菜单开始,输入“3”将我们带到另一个菜单。第二个菜单是 class,与第一个菜单几乎相同,唯一的区别是方法 functionality/names。我想知道我是否可以将第二个菜单作为原始菜单的子菜单-class 以避免代码重复?
这是第一个菜单的代码,第二个菜单-class 重复:
"""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()
要从第二个菜单返回到第一个,第二个菜单中的返回方法调用第一个菜单
"""Second Menu"""
class SecondMenu:
...
...
...
def back(self):
Start().run()
提前致谢。如果需要更多说明,请告诉我,我是 oop 原则的新手。
如果将无限循环移至主程序,您可以考虑在每次迭代中实例化并向用户呈现一个新的(或现有的)菜单,直到他从主菜单中选择 Q(uit)
。
然后你可以定义一个基础 class Menu
只有基础。之后,您可以考虑 MainMenu
sub-class,以及您需要的任何更多菜单。
菜单不需要与用户交互,而是与您的程序交互。您的程序基本上是一个循环,要求用户提供菜单选项。
如果您想用其他方式与用户或其他系统交互,但您仍想re-use这些菜单,这种隔离会很有用。
菜单 运行 一切都来自他们自己,虽然可能,但看起来有点像菜单过度设计。
您可能还喜欢标准库中的 cmd
模块。也是object-oriented。不过,您必须阅读 documentation 并遵守其规则。您会在那里找到示例。