[Tutor] Instantiating a list of strings into a list of classes
spir
denis.spir at gmail.com
Sat Mar 6 17:47:20 CET 2010
On Fri, 5 Mar 2010 17:38:08 -0800
Daryl V <vandyke.geospatial at gmail.com> wrote:
> I have a csv list of data, of the form:
> plot, utmN83_X, utmN83_Y, plot_radius_m
> Spring1,348545,3589235,13.2
> etc.
[...]
> What I want to do is use the first entry in that row (row[0]) as the
> variable name for the instantiated class.
There are several solution, for design & implementation.
(1) You can do some trick to create vars as you explain. But it's ugly and in my opinion wrong: because the set of data build a kind of whole, thus should have global name, say "data".
(2) Build a dictionary which keys are the names:
name = row[0]
data[name] = value
...
v = data[name]
This is much better because its standard programming and the data are properly packed. Right?
(3) Build a custom composite object which attributes are named the way you want. Python does not have a syntax to set attributes with variable names, but provides a builtin func for this:
name = row[0]
setattr(data, name, value)
...
v = data.name
It may look a bit contorsed, but again it's because python does not have a syntax for this.
I would go for the latter -- it may be a question of style.
Denis
--
________________________________
la vita e estrany
spir.wikidot.com
More information about the Tutor
mailing list