Comment ajouter dynamiquement des propriétés à une classe
En Python, il est possible de créer des propriétés d'instance de manière dynamique, vous donnant la flexibilité de modifier le comportement d'une classe pendant l'exécution. Voici comment procéder :
La première approche que vous avez tentée était incorrecte, car elle définissait c.ab sur un objet de propriété au lieu de la valeur réelle. Pour ajouter correctement une propriété, vous devez modifier la classe elle-même, pas l'instance.
class C(dict): pass ks = ['ab', 'cd'] vs = [100, 200] for i, k in enumerate(ks): # Define the property using classmethod setattr(C, k, property(lambda self: vs[i])) c = C() print(c.ab) # Outputs 100
Dans ce code mis à jour, nous définissons l'appel setattr comme une méthode de classe, qui garantit que la propriété est ajoutée au classe plutôt que l’instance. La fonction lambda dans la propriété renvoie la valeur correspondante de la liste vs.
Les propriétés peuvent également être utilisées pour définir des fonctions getter et setter dynamiques, offrant une plus grande flexibilité dans la gestion des propriétés. N'oubliez pas que l'ajout de propriétés ne peut être effectué qu'au niveau de la classe, et non au niveau de l'instance, ce qui en fait un outil puissant pour personnaliser le comportement de la classe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!