call to function by text variable
Steve Holden
steve at holdenweb.com
Mon Mar 26 02:40:16 EDT 2007
Cameron Laird wrote:
> In article <mailman.5604.1174863631.32031.python-list at python.org>,
> Jan Schilleman <jan.schilleman at xs4all.nl> wrote:
>> Hi,
>>
>> try this:
>> func = getattr(operations, ["Replace", "ChangeCase", "Move"][n])
>>
>> HTH,
>> Jan
>>
>> "ianaré" <ianare at gmail.com> schreef in bericht
>> news:1174862186.134912.117270 at p15g2000hsd.googlegroups.com...
>>> yeah the subject doesn't really make sense does it?
>>>
>>> anyway want I want to do is this:
>>> if n == 1:
>>>
>>> self.operations.insert(pos, operations.Replace.Panel(self, main))
> .
> .
> .
> I think you meant "...[n - 1]" rather than "...[n]".
>
> I'm a tiny bit surprised no one has organized this in terms
> of a dictionary. I don't know, of course, how robust is the
> characterization of n as a small integer. Maybe
>
> lookup_table = {
> 0: "Replace",
> 1: "ChangeCase",
> 2: "Move"}
>
> captures the sentiment; maybe something else does it better.
>
Surely for this requirement the *only* advantage of a dictionary over a
list is its ability to index with arbitrary values and thereby avoid the
need to use [n-1]. Wouldn't it therefore be less perverse to use
lookup_table = {
1: "Replace",
2: "ChangeCase",
3: "Move"}
Of course the dictionary would be a big win if the integer choice values
weren't a linear sequence. Otherwise using a list with a fixed offset is
likely to be quicker.
regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
Recent Ramblings http://holdenweb.blogspot.com
More information about the Python-list
mailing list