我正在使用python的cmd模块制作命令行程序。在这个程序中,我使用数字来确定用户想要使用的功能。我对功能6有以下问题,它只是再次打印出功能,但我想回忆一下MainMenu类,所以我不必使用:
def do_6(self, line):
print (" M A I N - M E N U")
print ("1. Feature one")
print ("2. Feature two")
print ("3. Feature three")
print ("4. Feature four")
print ("5. Feature five")
print ("6. Print options")
print ("7. Exit ")
print (30 * '-')
这只是重复MainMenu类中的内容,但如果要更改MainMenu则有点草率。您还被迫更改功能6。
MainMenu课程:
class MainMenu(cmd.Cmd):
print (" M A I N - M E N U")
print ("1. Feature one")
print ("2. Feature two")
print ("3. Feature three")
print ("4. Feature four")
print ("5. Feature five")
print ("6. Print options")
print ("7. Exit ")
print (30 * '-')
我试过这样做:
def do_6(self, line):
MainMenu()
或
def do_6(self, line):
MainMenu
但这没有效果,我如何正确回忆我的MainMenu课程?我的第二个问题是:假设每次功能结束或完成时我想回忆MainMenu类,我该怎么做?
答案 0 :(得分:1)
class MainMenu(cmd.Cmd):
def __init__(self):
""" Class constructor """
print (" M A I N - M E N U")
print ("1. Feature one")
print ("2. Feature two")
print ("3. Feature three")
print ("4. Feature four")
print ("5. Feature five")
print ("6. Print options")
print ("7. Exit ")
print (30 * '-')
你需要了解班级是如何运作的。类具有成员,方法和许多其他功能。与所有语言一样,您需要定义此字段。例如,这是一个带有构造函数,字段和方法的方法:
class Example:
field = "foo"
def __init__(self, ivar_value):
self.instance_var = ivar_value
def print_me(self):
print("Field : ", self.field)
print("Var : ", self.instance_var)
类只定义一次。当你试图以你的方式运行MainMenu()
时,它只能工作一次,因为第二次,MainMenu类已经被定义了。