>> I thought when I read the 2002 thread with the subject (Creating an >> Identifier or Object Name from a String?), that I had found a solution >> to my problem.
Wait. But what was the solution you ended with? If the conclusion of that thread was to use eval(), then that was the wrong lesson, and you needed to read more. *grin* Read the thread in its entirety: http://mail.python.org/pipermail/tutor/2002-June/014923.html The resolution should have been: don't use eval to dynamically create variable names from string. Rather, keep all the new instances in a dictionary that's keyed by those strings. Avoid eval unless you really understand what you're doing. Avoid the very real dangers in eval(): * It's inconvenient. You can't create variables like with names that you'd like: ################################################################# >>> class Person: ... def __init__(self, name): ... self.name = name ... >>> names = ['carmen sandiego', 'eva_luator'] >>> for n in names: ... exec("%s = Person('%s')" % (n, n)) ... Traceback (most recent call last): File "<stdin>", line 2, in ? File "<string>", line 1 carmen sandiego = Person('carmen sandiego') ^ SyntaxError: invalid syntax ################################################################# because Python's variable names are not allowed to have spaces in them. In contrast: ############################ >>> people = {} >>> for n in names: ... people[n] = Person(n) ... >>> people.keys() ['carmen sandiego', 'eva_luator'] ############################# just works, and anyone with elementary knowledge of dictionaries will know exactly what this is doing. The code ends up simpler because it eliminates the need to construct some string to eval or execute that quotes its arguments correctly. * It's insecure. See: http://mail.python.org/pipermail/tutor/2004-December/033844.html _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor