Function lookup using a directory.

Roman Suzi rnd at onego.ru
Mon Jun 18 11:59:33 EDT 2001


On Mon, 18 Jun 2001 andy.pevy at nokia.com wrote:

> Hi Guys
> 
> 	I am having trouble with the directory data type. What I want to
> do is to set up a directory that I can use to parse a command entered by 
> the user, and have a directory return the name of a class to handle the 
> command.  Like this :-
> 
> 
> command_table = {'0':    'Help0',
>             '1':    'Help1',
>             '2':    'Help2',
>             '3':    'Help3' }
> 
> class Help0:
>             
>     def run(self,which):
>         if len(which) == 1:
>             print 'Help no args'
>         else:
>             print 'Help args' 
> 
> class Help1:
> 
>     def run(self,which):
>         if len(which) == 1:
>             print 'Help1 no args'
>         else:
>             print 'Help1 args'
> 
> class Help2: 
> 
>     def run(self,which):
>         if len(which) == 1:
>             print 'Help2 no args'
>         else:
>             print 'Help2 args'
> 
> class Help3: 
> 
>     def run(self,which):
>         if len(which) == 1:
>             print 'Help3 no args'
>         else:
>             print 'Help3 args'

Brrrr...

Maybe:

class Help:
    noargs = "no such command"
    args = "no such cmd"

    def run(self,which):
        if len(which) == 1:
            print self.noargs
        else:
            print self.args

class Help0:
    noargs = "blah blah ..."
    args = "balh x blah y ..."

... 

Then just this:

command_table = {
             '0':    Help0,
             '1':    Help1,
             '2':    Help2,
             '3':    Help3, 
}
 
> if __name__ == '__main__':
> 
>     command = user_input()
> 
>     try:
>         h = command_table[command[0]]
>     except:
>         print command[0]+' not found'

h = command_table[command[0]]
 
h.run()	

> So, a couple of questions please.....
> 
> Can I do this, I.E. have a class as a value in a dictionary
> and if so, what would the correct declaration be.
> 
> Thanks.
> 
> 
> Andy Pevy
> A Very Beginner Pythoneer.

Sincerely yours, Roman A.Suzi
-- 
 - Petrozavodsk - Karelia - Russia - mailto:rnd at onego.ru -
 





More information about the Python-list mailing list