By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,222 Members | 2,374 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,222 IT Pros & Developers. It's quick & easy.

Create object for item in list

P: n/a
I wonder how this can be accomplished:

I've got a list, containing several strings. The strings look like
this:

[ "Name1/N1/N2/N3" , "Name2/N1/N2/N3" , "..." ]

I would like to create one object for each item in the list, and the
name of the object should be "str(item.split("/")[0])".

I've tried this, but it won't work:

for item in list:
str(item.split("/")[0]) = class(item)

....
Jul 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
"Helge" <he***@hefre.com> wrote in message
news:39**************************@posting.google.c om...
I wonder how this can be accomplished:

I've got a list, containing several strings. The strings look like
this:

[ "Name1/N1/N2/N3" , "Name2/N1/N2/N3" , "..." ]

I would like to create one object for each item in the list, and the
name of the object should be "str(item.split("/")[0])".

I've tried this, but it won't work:

for item in list:
str(item.split("/")[0]) = class(item)

...


A couple of small points before getting to the big issue:

1. "class" is a keyword, and can't be used in the context you have it. You
should define your class (which I'll call "C") earlier in your program.

2. "list" is a type name, and shouldn't be used as a variable name, so I'll
change it to "mylist".

2. The str() function is unnecessary, since item.split("/")[0] is already a
string by definition.

Now, I assume what you are trying to do is get Python to create an instance
of your class C, and assign it to the variable whose name is given by the
evaluation of item.split("/")[0]. In other words, you want Python to
execute a series of statements that look like this:

Name1 = C("Name1/N1/N2/N3")

What you've done doesn't quite accomplish this; the left side of your
assignment expression evaluates to a string, so in effect you're telling
Python to execute:

"Name1" = C("Name1/N1/N2/N3")

(At least that's how I interpret what you mean by "class(item)".) This
doesn't make sense to the interpreter, any more than "Spam" = 7 would. But
you can get Python to execute code provided to it inside a string, as
follows:

for item in mylist:
exec "%s = C('%s')" % (item.split("/")[0], item)

Good luck... Needless to say, you need to be careful about where the
contents of "mylist" come from, or you could end up overwriting other
variables that your program needs to function correctly.

--
I don't actually read my hotmail account, but you can replace hotmail with
excite if you really want to reach me.
Jul 18 '05 #2

P: n/a

"Helge" <he***@hefre.com> wrote in message
news:39**************************@posting.google.c om...
I wonder how this can be accomplished:

I've got a list, containing several strings. The strings look like
this:

[ "Name1/N1/N2/N3" , "Name2/N1/N2/N3" , "..." ]

I would like to create one object for each item in the list, and the
name of the object should be "str(item.split("/")[0])".


Binding and using dynamic names in the global (or function local) namespace
is generally a nuisance. The standard idiom is to use a separate
dictionary as a namespace for just those items. Something like

myobs = {}
for datastring in namedata:
data = datastring.split('/')
myobs[data[0]] = myclass(*data[1:])

Terry J. Reedy


Jul 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.