Je voudrais mettre à jour les attributs d'une classe dynamiquement, mais il semble que la combinaison de setattr et getattr ne fonctionne pas comme je voudrais l'utiliser.Python combinant setattr et getattr
Voici ma classe principale:
class Container(object):
def __init__(self):
pass
container = Container()
attributes = ['a', 'b', 'c', 'd']
values = [[1, 2, 3, 4, 5], [True, False], ['red', 'blue', 'green'], [0, 1, -1, -5, 99]]
S'il vous plaît noter que le but de cet exemple que je construisais explicitement la liste des attributs et leurs valeurs respectives. Cependant, dans l'application réelle de ce code, je ne sais rien à l'avance. Ni leurs numéros, nom ou valeurs. Cela nécessite la nécessité de le faire de manière dynamique.
Voici le reste du code:
for key, value in zip(attributes, values):
setattr(container, key, [])
for val in value:
setattr(container, key, getattr(container, key).append(val))
cette partie ne fonctionne pas lorsque je lance le code. Je pourrais enregistrer la partie getattr dans une variable tmp puis appeler la méthode append pour la liste avant d'appeler la setattr, mais je voudrais la condenser si possible.
Quelqu'un pourrait m'expliquer pourquoi cela ne fonctionne pas? Quelle (s) alternative (s) ai-je?
Merci pour votre aide
"* cette partie ne fonctionne pas lorsque j'exécute le code *" comment? Aussi, qu'attendez-vous qu'il se passe? – Blender