<[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> Dennis Lee Bieber:
>> Presuming the <event x> is a type code I'd just set up a list of 
>> functions:
>> Then create a dictionary of them, keyed by the <event x> code
>> processors = { "1" : process_1,
>>         "2" : process_2,
>> ....
>> "x" : process_x }
>
> Just a dict of functions was my solution too, I think avoiding more
> complex solutions is positive.
>
> Bye,
> bearophile
>
I think I'd go one step up the OO ladder and match each event code to a 
class.  Have every class implement a staticmethod something like 
"load(stream)" (using pickle terminology), and then use a dict to dispatch.

eventTypes = { "1" : BlahEvent, "2" : BlehEvent, "3" : BelchEvent, "4" : 
BlechEvent }

eventObj = eventTypes[ stream.read(1) ].load( stream )

Now transcending from plain-old-OO to Pythonic idiom, make this into a 
generator:

eventTypes = { "1" : BlahEvent, "2" : BlehEvent, "3" : BelchEvent, "4" : 
BlechEvent }
def eventsFromStream(stream):
    while not stream.EOF:
        evtTyp = stream.read(1)
        yield eventTypes[evtTyp].load(stream)

and then get them all in a list using

list( eventsFromStream( stream ) )

-- Paul


-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to