Thank you. I didn't reply earlier because I was trying to get my head around what you wrote, which was strange and foreign to me.
It seems to me that the dictionary object you suggested is a direct replacement for the function code, only more efficient because the case table is internalised with a hash table, and the original if/elif/else case table was unlikely to be implemented as a hash table. And presumably, it is idiomatic because Python programmers expect to use dictionaries for their lookup tables. You have answered a question I didn't know enough to ask :~) --which is why I started with the general question, so I don't feel too stupid about that --. And now I wonder about the 'other' question. Should I consider dynamically overriding the methods in my 'Device' class, instead of creating separate classes for the Psp and Pwr devices? I could create an object of the base Device class, and at init I could make sure the methods were connected for a Psp or a Pwr device. When (if ever) is that a good idea? Steve. "Dan Bishop" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > On Aug 23, 10:21 pm, "bambam" <[EMAIL PROTECTED]> wrote: >> Would someone like to suggest a replacement for this? This is a >> function that returns different kinds of similar objects, depending >> on what is asked for. PSP and PWR are classes. I don't really >> want to re-write the calling code very much: I'm just wondering >> if the function can be replaced with some kind of OOP pattern. >> >> def Device(DeviceType): >> if DeviceType=='PSP': >> return PSP() >> elif DeviceType=="Power Supply" >> return PWR() >> etc... >> >> Thanks! > > Typically, you'd use a dictionary: > > DEVICE_DICT = { > 'PSP': PSP. > 'Power Supply': PWR, > # etc. > } > > and your function would simply return DEVICE_DICT[device_type]() > -- http://mail.python.org/mailman/listinfo/python-list