kevin parks wrote:

On Oct 12, 2009, at 8:02 PM, Dave Angel wrote:

Often, when a combination of existing stdlib collection types gets too confusing, it's time to consider classes and objects. Not necessarily to make the program "object oriented," but to make the program data structure understandable.


That's sage advice.... I just dislike and resist OO. But i do eventually need to make steps in that direction.



Well, an object is just a container, and a class is standardized way to make similar objects. But in Python, there are few restrictions on what you can do with such objects. So just start with data and without inheritance, which makes it very simple to understand. Then C++ would commonly call it struct, instead of class, and in fact struct already existed in C, which is not object oriented.


class ProbableValue(object):
   def __init__(self, probability, newvalues):
"""probability is a float 0.0<=prob < 1.0. newvalues is a tuple of one or more values"""
       self.probability = probability
       self.newvalues= newvalues


Is all you really need. Now you can create objects of this class by simply saying:

 val1 = ProbableValue(.3, (1, 4))
 val2 = ProbableValue(.5, (12,))

and you can access the data by     val1.probability,     or   val2.newvalues

Now you can initialize the original rules table by something like:

rules = {}
val1 = ProbableValue(.3, (1,4))
val2 = ProbableValue(.25, (5))
val3 = ProbableValue(.45, (1,3,5))      #note that .3 + .25 + .45 == 1
rules[1] = (val1, val2, val3)    #one dictionary rule

and repeat those last four lines as needed to build up the dictionary


Can you see where you might go from here?

DaveA
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to