Martin De Kauwe wrote: > Note I have cross posted this as I have only just found this mailing list > and perhaps it is the more appropriate place (I am not sure)?
I think your question is appropriate for both lists, it just wasn't sexy enough for anyone on c.l.py to answer ;) > I have been working on re-writing a model in python. However I am not sure > how easy on the eye my final structure is and would appreciate any > constructive comments/suggestions. So broadly the model estimates how > plants grow using a number of related sub functions which I have grouped > into classes and they all live in separate files. My main issue at the > moment is I think I have a lot of verbose class instances but I really > can't see a better way to do it. Is there a better way? How do other > people do similar things? I am talking largely about the instances in the > method run_sim Random remarks: > pg = PlantGrowth(self.control, self.params, self.state, > self.fluxes, self.met_data) I'd prefer your code to be even more verbose here; no two-letter variables for anything that is non-generic. > # plant growth > pg.grow(project_day, self.date, leafnc) With the construction in mind that is actually > # plant growth > plant_growth.grow(project_day, self.date, leafnc) but plant_grows.grow() does not make a lot of sense, and the comment is superfluous as it just undoes the abbreviation instead of explaining what is going on. > for i in self.met_data.doy: > project_day = i - 1 > self.increment_date() I'd iterate over the project_day-s directly if possible for project_day in self.project_days(): ... > # calculate model decay rates > dc.decay_rates() A lot of methods don't take any arguments and return nothing. I'm guessing that they modify the state that you passed to the initializer. I prefer these modifications to be explicit if feasible, e. g. state = dc.decay_rates(state) where of course state is a placeholder for the actual variables that are necessary to do the calculations. The big picture? I'll leave that for someone else. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor