Newbie Alert: Help me store constants pythonically

Brendan spam4bsimons at yahoo.ca
Sun Nov 6 17:33:17 CET 2005


Hi all

I'm new to Python (and programming in general), and I can't decide what
is the most 'pythonic' way to approach a problem.  Your advice would be
appreciated.

I have a bunch of 'scans', containing the data measured from one of
several types of 'model'. Each 'model' has different values for a list
of constants  I want to create 'analyses' which interpret the data from
the scans, with reference the appropriate model.  So far, I have come
up with three strategies to store this information, illustrated below
(I've simplified the constant list to just two):

1) Store the model constants as class instances:

class Model:
    def __init__(self, numBumps, sizeOfBumps):
        self.__dict__.update(locals()); del self.self

MODEL1 = Model(1, 2)
MODEL2 = Model(3, 4)
#etc

class Analysis:
    def __init__(self, scanData, model):
        #do analysis

2) Store the model constants as class variables:

class MODEL1:
    numBumps = 1
    sizeOfBumps = 2

class MODEL2:
    numBumps = 3
    sizeOfBumps = 4

class Analysis:
    #as with 1

3) Store the model constants as class variables of the analysis class:

class Model1Analysis:
    numBumps = 1
    sizeOfBumps = 2

    def __init__(self, scanData):
       #do analysis

class Model2Analysis(Model1Analysis):
    numBumps = 3
    sizeOfBumps = 4

There may be more options, but at this point I became paralyzed with
choice.  I worry about getting stuck with an unworkable structure since
I don't have the experience to decide the merits of each in advance.  I
get way too frustrated about these things :)
   Brendan




More information about the Python-list mailing list