Create object for item in list

Russell Blau russblau at hotmail.com
Thu Apr 29 15:23:29 EDT 2004


"Helge" <helge at hefre.com> wrote in message
news:39885b3c.0404291110.7bd152ba at posting.google.com...
> 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.





More information about the Python-list mailing list