我正在使用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类,我该怎么做?

最佳答案

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类。

关于python - 调用cmd模块python中的菜单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31748200/

10-10 11:00