accessing a classes code
Paul McGuire
ptmcg at austin.rr._bogus_.com
Wed Apr 19 12:00:20 EDT 2006
"Ryan Krauss" <ryanlists at gmail.com> wrote in message
news:mailman.4754.1145458893.27775.python-list at python.org...
======================
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
More information about the Python-list
mailing list