Creating object attributes

Greg Lindstrom greg.lindstrom at novasyshealth.com
Thu Jul 22 16:30:29 EDT 2004


Hello-

I have created a class, FixedLengthRecord.py, that allows me to manipulate
fixed length records in the routines I write.  I recently converted it to
read record layouts from an SQL server (it used to read config files) and I
am thinking of making another change to make my code cleaner [WARNING: I am
going to be violating "pure" OO theology...if that offends you, please exit
now].

The heart of the class is a dictionary named "fields" that stores the
current value, length, data type, and default value for the field.  Each key
of the dictionary corresponds to a "logical name" read in from the database.
I then have "Get()" and "Set()" methods to -- as you might have guessed --
get and set the values.  Other methods are Clear(), Spreadsheet(),
Serialize(), Unserialize(), etc.  So, in my application code I might have
something like the following:

myRec = FixedLengthRecord( id='gsl0001', version='1.0', description='This is
my record!')

myRec.Set('first_name', 'Greg')          # only field names in the record
layout may be set this way
myRec.Set('last_name', 'Lindstrom')

giver = myRec.Get('first_name')

OK...you get the idea.  What I would like to do, or at least consider, is
adding an attribute for each data field value instead of adding it to the
dictionary so I could access my data as follows:

giver = myRec.first_name

I still would use the Set() methods because they insure the fields are less
than or equal to the maximum length allowed.  This violates the OO paradigm
of accessor methods, but it cleans up my application code and, since I live
on reality street and not academia, I am interested in how to do it.

So, to simplify the project a tad, suppose I had a tuple of fields.

myFields = ('first_name', 'last_name')

How could I incorporate them into an class "on the fly" to produce the
equivalent of

self.first_name = 'None
self.last_name = None

Are there other ways to handle fixed length records?

Thanks!
--greg

Greg Lindstrom                                         (501) 975-4859
NovaSys Health                  greg.lindstrom at novasyshealth.com

"We are the music makers, and we are the dreamers of dreams"  W.W.





More information about the Python-list mailing list