Function lookup using a directory.

Ype Kingma ykingma at accessforall.nl
Tue Jun 19 05:01:46 EDT 2001


andy.pevy at nokia.com wrote:
> 
> Hi Ype
> 
> Ype Kingma <ykingma at accessforall.nl> wrote:
> > Andy,
> 
> > In addition to the earlier replies:
> 
> > Your run() method seems to be checking for
> > presence of arguments, so you might
> > consider defining it with an extra '*' as:
> 
> > class Help0:
> >     def run(self, *which):
> >         if len(which) == 1:
> >             print 'Help no args'
> >         else:
> >             print 'Help args'
> 
> > This will give you a tuple with the passed arguments,
> > in your case an empty tuple.
> 
> The argument passed to thee run method is a list, so does this still necessary ??.

That depends on what you want to check in the method.

Your own code (below) calls the method without arguments:

> >>     h.run()     # Call the run method of the selected class.

This would cause 'which' to be set to an empty tuple for
the execution of the method.

Calling it as:

    h.run([])

would cause 'which' to be set to a tuple containing an empty list.


In case you want the empty list to be the default value 
define the method as:

    def run(self, which=[]):

This would cause the invocation

h.run()

to have 'which' bound to an empty list during execution.

Good luck,
Ype


> 
> > Have fun,
> > Ype
> 
> > 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'
> >>
> > [snip]
> >>
> >> if __name__ == '__main__':
> >>
> >>     command = user_input()
> >>
> >>     try:
> >>         h = command_table[command[0]]
> >>     except:
> >>         print command[0]+' not found'
> >>
> >>     h.run()     # Call the run method of the selected class.
> >>
> 
> > --
> > email at xs4all.nl
> 
> --
> 
> We were always told that a million monkeys typing for a million years
> would eventually produce the works of Shakespeare. Now, thanks to the
> Internet, we know this is not true.

-- 
email at xs4all.nl



More information about the Python-list mailing list