Create object name from string value?

Alf P. Steinbach alfps at
Thu Jan 21 15:43:05 CET 2010

* Gnarlodious:
> On Jan 20, 10:35 pm, Steven D'Aprano wrote:
>> That's the wrong way to handle the problem. Named objects are only useful
>> if you know the name of the object when writing the code. Otherwise, how
>> do you know what name to use in the code?
> Thank you for the help. I am gathering the names of all *.plist files
> in a folder, creating objects named the filename, and accessing the
> data like this:
> Data.Server.Config.BaseURL
> Adding a .plist file would automatically create a plist dictionary
> object inside the Data module.
>> The right way to solve this problem is with a dictionary:
>> for name in ["object1", "object2", "object3"]:
>>     d = {name: classname()}
>>     print d[name]
> This works! However I end up saying:
> d['Server'].Config.BaseURL
> to get the data, when I should be saying:
> Server.Config.BaseURL
>> but for the record, the way to use exec is like this:
>> exec("object1 = classname()")
> I failed to make that work. So back to the original question. How to
> make an instance named according to a string inside a variable? I
> guess it should be in the top-level namespace, not inside a list or
> dictionary.

I don't understand how you intend to use a variable whose name comes from 
dynamic data.

So I agree with Steven that it's the wrong way to handle the problem  -- 
whatever the problem is!

But, if it can help:

   >>> import __main__
   >>> setattr( __main__, "blah", 123 )
   >>> blah
   >>> _


- Alf

More information about the Python-list mailing list