Classification: UNCLASSIFIED Caveat (s): FOUO Kent,
Thanks for the lead. I eventually did something like the Strategy Pattern you sent. It was so much simpler when I just inherited the functions. I think I need to redesign the code but for now it works and my boss will be happy. Thanks again. John Ertl Meteorologist FNMOC 7 Grace Hopper Ave. Monterey, CA 93943 (831) 656-5704 [EMAIL PROTECTED] Classification: UNCLASSIFIED Caveat (s): FOUO From: Kent Johnson Sent: Thu 11/6/2008 7:36 PM To: Ertl, John C CIV 63134 Cc: tutor@python.org Subject: Re: [Tutor] How to use function from specific module and then switch to other module On Thu, Nov 6, 2008 at 5:54 PM, Ertl, John C CIV 63134 <[EMAIL PROTECTED]> wrote: > Classification: UNCLASSIFIED > Caveat (s): FOUO > > I have a program that collects weather data from weather models. I > originally had a module that contained a bunch of function that I used. So > I just added it to the init of the class I was using and inherited the > functions. That worked great but now I have two different models that I can > get weather from. Each Module A and B have the exact same function names > in them but they both do slightly different things. It might help to see a working example of what you did for one model. > > The idea is as I step through a list I want to use a different function > (same name but from a different module) for each element in the list. How > do I have a generic way to do this. > > for example for point 1 I want to use the rain function from Module A and > then for point 2 I want to use the rain function from Module B. At first > though I would just init the class from either A or B for each point but I > need the function from A or B to be able to use function from my main > program...that is why the inheritance thing worked great for just one > module. Don't try to make the model A and B into base classes of the forecast. Just pass the forecast object to the model. So your rain() method will look more like this: def rain(self, fc): fc.calTime() # this function is in the main forecast class fc.rain = do stuff for model A where fc will be the forecast instance. You might also be able to use simple functions rather than classes: def rain(fc): fc.calTime() # this function is in the main forecast class fc.rain = do stuff for model A then just call moduleA.rain(self) or moduleB.rain(self). You might want to read about the Strategy pattern, that is what you are doing. Here is a Python example of a class-based Strategy. http://mail.python.org/pipermail/python-list/2006-April/379188.html This example passes the strategy to the constructor but you can set it in your pointInfo() method if you like. I would just make one function to handle each point though: for each in x.pointList: x.handlePoint(each) where def handlePoint(self, point): pointStrategy = ... pointStrategy.rain(self, point) Kent Kent
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor