On Friday, May 25, 2018 at 1:56:14 AM UTC-4, dieter wrote: > [email protected] writes: > > > I am trying to convert a string to a variable. > > > > I got cases 1 & 2 to work, but not cases 3 & 4. > > > > The print statement in cases 3 & 4 reports the following: > > builtins.AttributeError: type object 'animal' has no attribute 'tiger' > > > > I am stuck on creating variables that can be accessed as follows. > > animal.tiger > > self.animal.tiger > > > > Any suggestions? > > ... > > # Case 3: This does not work > > indata = 'animal.tiger' > > vars()[indata] = "Tigers, big and strong!" > > print (animal.tiger) > > In the expression "animal.tiger", the "variable" is "animal", > not "animal.tiger". It is evaluated as follows: > determine the object bound to "animal", access its attribute "tiger". > Your error message tells you that the first step (object bound > to "animal") has been successful, but the result lacks the > attribute "tiger". > > > #Case 4: This does not work > > class animal(): > > def create (self, indata): > > vars(self)[indata] = "Tigers, big and strong!" > > Here you want to define the attribute "tiger" (I think), > not "animal.tiger". Note that the "." in a Python expression > (not a string) separates two individual steps: determine > an object corresponding to the leftside to the "."; access > the attribute corresponding to the name following the ".". > > print (self.animal.tiger) > > > > tmp = animal() > > tmp.create('animal.tiger')
Hi Dieter, After reading your response, I picked up on the 'attribute' word. Updated case 3: (Success) indata = 'tiger' setattr (animal, indata, "Tigers, big and strong!!!") print (animal.tiger) animal.tiger = "Lions are bigger and stronger" print (animal.tiger) Output is: Tigers, big and strong!!! Lions are bigger and stronger I am still working on case 4 using setattr. Thanks, Bruce -- https://mail.python.org/mailman/listinfo/python-list
