On 02/18/2012 03:39 AM, Peter Otten wrote:
Leam Hall wrote:
On 02/17/2012 09:26 AM, Dave Angel wrote:
There are two ways to think of a class. One is to hold various related
data, and the other is to do operations on that data. If you just
consider the first, then you could use a class like a dictionary whose
keys are fixed (known at "compile time").
I think a class is the way to go for a couple reasons. First, of course,
is that it pushes me to learn more. It also lets me encapsulate a lot of
the work into one thing and keep the methods there.
One word of caution. If you make just one do-it-all class with a single
instance and use instance attributes as if they were global variable the
improvement over the global dictionary is minimal. You still should strive
to make dependencies explicit, e. g. prefer
def add(a, b): return a + b
over
class DoItAll:
def add_a_and_b(self):
self.c = self.a + self.b
Understood. In this case I'm starting the application and there are two
separate bits. I'm studying tkinter for the class I'm in so the GUI
stuff is one module and the formulas are in another module. The reason I
considered a global dict or a class is because all of the data bits are
directly related.
Dave angel wrote:
class MyDiver(object):
def __init__(self, depth, gasmix, time, rate):
self.depth = int(depth)
self.gasmix = int(gasmix)
self.time = datetime.datetime(time)
self.rate = float(rate)
Which is a pretty good start, makes me think he's done scuba before. :)
The object in question is a scuba dive. The user types in how deep they
want to go, what gas mix they are on, how long they plan on staying, and
what they think their air consumption rate will be. The formulas
calculate absolute atmospheres which are used in other formulas, O2
concentration (a risk factor), how much of the daily increased O2
exposure the dive will create, and how much gas is needed to make that
dive.
If the program grew the only thing that might be pulled out is the air
consumption rate. That would likely go into a diver object so there was
a profile for each diver. However, at the moment the app is just giving
you dive profile information so you can plan your bottom time and gas
consumption.
That's my thinking as of this morning. I need to go back and build
unittests; will do so while moving it into a class. Should be fun and
good learning!
Leam
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor