菜单python命令行

菜单python命令行,python,command-line,menu,Python,Command Line,Menu,我有这个菜单。它动态加载一个类并调用一个方法。一切都很好,但方法在我写“退出”时打印hello。欢迎提出任何建议 class ClassA(object): def main(self): libs = self.directory() print '***************************************************' print '* Menu' for item in libs :

我有这个菜单。它动态加载一个类并调用一个方法。一切都很好,但方法在我写“退出”时打印hello。欢迎提出任何建议

class ClassA(object):
    def main(self):
        libs = self.directory()
        print '***************************************************'
        print '* Menu'
        for item in libs :
          print '** ' + item 
        print '***************************************************'

        while True:
            module_name = raw_input(">>> ")

            if module_name != "":
                if module_name == 'exit':
                  break 
                elif module_name in libs:  
                  lib = __import__(module_name)
                  class_ = getattr(lib, module_name)
                  theclass = class_()
                  theclass.myfunction() 
                  break   
                else:
                  print 'Module does not exist' 
B类

class ClassB(object):
    def myfunction(self):
        print 'hello'
对代码进行一些重大修改后,这可能就是您想要的:

import glob

class ClassB():
    def myfunction(self):
        print 'hello'

if __name__ == '__main__':
    libs = [item[:-3] for item in glob.glob("*.py")]
    print '***************************************************'
    print '* Menu'
    for item in libs :
      print '** ' + item
    print '***************************************************'

    while True:
        module_name = raw_input(">>> ")
        if module_name != "":
            if module_name == 'exit':
              break 
            if module_name in libs: 
              lib = __import__(module_name)
              class_ = getattr(lib, 'ClassB')
              theclass = class_()
              theclass.myfunction() 
              break   
            else:
              print 'Module does not exist' 

. 当我键入“退出”时,不会打印“Hello”。请提供一份展示您的问题的表格,包括您给出的确切输入、您收到的确切输出以及您期望的确切输出。不客气,请随时将此问题标记为正确答案;)