2013-12-02 7 views
-1

У меня есть это меню. Он динамически загружает класс и вызывает метод. Все в порядке, но метод печатает привет, только когда я пишу 'exit'. Любое предложение приветствуется?menu python command line

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' 
+1

[работает на моей машине] (HTTP: // ideone.com/goxbC2). «Привет» не печатается, когда я набираю «exit». Пожалуйста, предоставьте [короткий, автономный, исполняемый пример] (http://sscce.org/), который показывает вашу проблему, включая точный ввод, который вы даете, точный результат, который вы получаете, и точный результат, который вы ожидаете. – Kevin

ответ

0

После некоторых основных изменения в код, это может быть то, что вы хотите:

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' 
+0

Большое спасибо !!! Отлично! –

+0

Добро пожаловать, не стесняйтесь отмечать этот вопрос как правильный ответ;) – Matt