nested data structures in classes

Joel jfmoxley at mit.edu
Thu Sep 11 20:20:11 CEST 2003


For posterity, here's what ended up working.  Many thanks to Tom Minka
for showing me this.  I understood the class stuff in principle, but I
just couldn't implement correctly.

class ReactionClass:
        def __init__(self,Name='',Reactant=[],Product=[]):
                self.Name = Name
                self.Reactant = Reactant
                self.Product = Product
        def __str__(self):
        # how to print the object
                return self.Name+': '+str(self.Reactant)+' ->
'+str(self.Product
)

Reaction = []
# two different ways of defining a reaction
Reaction.append(ReactionClass('Kinase',['GLUC', 'ATP'],['G6P',
'ADP']))
print(Reaction[0].Name)
print(Reaction[0])
Reaction.append(ReactionClass())
Reaction[1].Name = 'and so on'
Reaction[1].Reactant = ['one', 'two']
Reaction[1].Product = 'something else'
print(Reaction[1])
print(Reaction[1].Reactant[1])



jfmoxley at mit.edu (Joel) wrote in message news:<e31c4866.0308291220.776a92a5 at posting.google.com>...
> Does anyone have any thoughts on this?
> 
> Joel Forrest Moxley <jfmoxley at MIT.EDU> wrote in message news:<mailman.1061749909.28327.python-list at python.org>...
> > Greetings python-list!
> > 
> > The good news is that I've been having a blast with Python since early
> > Spring.  I've had great success in both learning the language from online
> > / usegroup resources and implementing it in one of my projects.  However,
> > I can't pretend to be an expert, and I do not have a strong comp sci
> > background.
> > 
> > This is a question that I've had for a while.  Usually, I'll stumble
> > across the answer with repeated attempts and re-searching the groups, but
> > I didn't have luck with this one, even in a Dietel book I picked up at the
> > library.  I'm assuming there's an obvious answer, so maybe ya'll can save
> > me some time.
> > 
> > My Python use involves organizing nested list information.  In a
> > simplified example, you could imagine a list of reactants and products in
> > a chemical reaction.  Thus,
> > 
> > len(nested_list_of_reactants) = len(nested_list_of_products) => "number of
> > reactions"
> > where: nested_list_of_reactants[i] => "list of reactants for reaction i"
> > where: nested_list_of_reactants[i][j] => "reactant j of reaction i"
> > 
> > And so forth.  Obviously, there are many attributes associated with a
> > specific reaction.  Currently, I just pass these attribute lists (nested
> > and non-nested) into and out of functions.  However, I'd like to be able
> > to create a class that would streamline this.
> > 
> > E.g., (this is a MATLAB structure whose qualities I'd like to emulate):
> > reaction(27).name = 'fawlty towers'
> > reaction(27).reactant(2).name = 'john cleese'
> > 
> > Currently, I'd have a list and a nested list to take care of this...
> > reaction_name[27] = 'fawlty towers' and reactants[27][2] = 'john cleese'
> > if this makes sense.
> > 
> > Any thoughts or suggestions on this type of data structuring would be
> > greatly appreciated.  Python love, Joel




More information about the Python-list mailing list