I think this is a lot like I am planning to do, except that the new classes will be dynamically generated and will have new default values that I want to specify before I write them to a file. But how do I do that?
Ryan On 4/19/06, Paul McGuire <[EMAIL PROTECTED]> wrote: > "Ryan Krauss" <[EMAIL PROTECTED]> wrote in message > news:[EMAIL PROTECTED] > ====================== > I have a set of Python classes that represent elements in a structural > model for vibration modeling (sort of like FEA). Some of the > parameters of the model are initially unknown and I do some system > identification to determine the parameters. After I determine these > unknown parameters, I would like to substitute them back into the > model and save the model as a new python class. To do this, I think > each element needs to be able to read in the code for its __init__ > method, make the substitutions and then write the new __init__ method > to a file defining a new class with the now known parameters. > > Is there a way for a Python instance to access its own code > (especially the __init__ method)? And if there is, is there a clean > way to write the modified code back to a file? I assume that if I > can get the code as a list of strings, I can output it to a file > easily enough. > ====================== > > Any chance you could come up with a less hacky design, such as creating a > sub-class of one of your base classes? As in: > > class BaseClass(object): > def __init__(self): > # do common base class stuff here > print "doing common base functionality" > > class SpecialCoolClass(BaseClass): > def __init__(self,specialArg1, coolArg2): > # invoke common initialization stuff > # (much simpler than extracting lines of source code and > # mucking with them) > super(SpecialCoolClass,self).__init__() > > # now do special/cool stuff with additional init args > print "but this is really special/cool!" > print specialArg1 > print coolArg2 > > bc = BaseClass() > scc = SpecialCoolClass("Grabthar's Hammer", 6.02e23) > > Prints: > ---------- > doing common base functionality > doing common base functionality > but this is really special/cool! > Grabthar's Hammer > 6.02e+023 > > If you're still stuck on generating code, at least now you can just focus > your attention on how to generate your special-cool classes, and not so much > on extracting source code from running classes. > > -- Paul > > > > > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list