Home > database >  How to access an attribute of an instance having the name of this instance in a string
How to access an attribute of an instance having the name of this instance in a string

Time:03-24

I have a list with all the names (strings) of the instances from a same class. I want to go through that list using a for loop and change their attributes one by one, but it raises this error: AttributeError: 'str' object has no attribute 'fixedColor'

Should I create another list containing the objects instead of strings, or is there a way to access them having the string object?

I want to apply it here:

listaCartas_temp = listaCartas
listaColores_temp = listaColores

for i in listaCartas:

    a=random.choice(listaCartas_temp)
    listaCartas_temp.remove(a)
    b=random.choice(listaCartas_temp)
    listaCartas_temp.remove(b)
    color = random.choice(listaColores_temp)
    listaColores_temp.remove(color)

    pairs.append(tuple([a, b]))

    a.fixedColor = color
    b.fixedColor = color

Where listaCartas (and listaCartas_temp) is a list containing those strings. I have various cards (cartas). I want to make unique pairs and assign a color to each pair.

CodePudding user response:

you can use a dictionary to match relevant string to the specified value

fixedColor = {}
fixedColor[a] = color
fixedColor[b] = color

when you want to access the color simply do

xxx = fixedColor[b]

and it will just be the same as calling your "b.fixedColor"

CodePudding user response:

String is just a string variable. It does not have any attributes. You can not access an object from their name. You can access an object through the variable of that object. You need to access your attribute like "object.attribute".

  • Related