Thank you, your explanation is very clear. I think it is my fault that I did not word my post correctly, apologies. Indeed the variable is attached to an object, I suppose the question should have been can I create an attribute to an object safely in python. To add a little more context, I have done this and it works however i do not know if this pythonic... the objects are then made in to a list so that I can iterate over them for another analysis and then save each one after each iteration, with the file name being the
thank you
object.namethat I have set as follows -
run1.name = 'run1' run2.name .. etc object_list = [run1, run2, run3] for object in object_list: do_analysis(object) save_object(f'object_name_is_{object.name}.filetype')the above works without issue, however, what i really want to know is, is it ok to do object.name = 'name' when I am not working with classes?
thank you
(Oct-04-2021, 08:24 PM)deanhystad Wrote: A variable is just a name. Think of it as a key in a namespace dictionary. The only thing you can use a variable for is getting or setting the object associated with the variable name. Even if you could somehow attach a name to a variable, it would do you no good. Your list vars does not contain any variables. It contains objects. vars has no association with the variable run1. vars[0] and run1 just happen to reference the same object, and that can change at any time. Variables do not provide you with a way to do what you want.
You'll get an error if you try to set the "name" attribute of a string or a list. These classes prohibit you from adding attributes (likely something in the __setattr__()). You probably cannot do what you want by attaching the name to the object.
You could create a new object that includes the name and the object.
vars = [(var, f'name{i}) for i, var in enumerate(vars)]Since it appears the filename is based on the array index, why not generate the names when you need them?