Exemple de comment ajouter dynamiquement de nouveaux attributs à une classe en python:
Créer une classe python
Créons d'abord une classe simple en python appelée ici product avec deux attributs data et name :
class product:
def __init__(self, data, name, **kwargs):
self.data = data
self.name = name
Créons maintenant une instance de classe :
import numpy as np
data = np.arange(1,9)
product_01 = product(data, '01')
alors
product_01.data
product_01.name
renvoie respectivement
[1 2 3 4 5 6 7 8]
et
'01'
Supposons maintenant que nous voulons ajouter un nouvel attribut appelé "new_data" à l'instance de la classe "product_01" qui stockera les données suivantes :
data_02 = data ** 2
Créer une classe python qui peut ajouter de nouveaux attributs
Pour ce faire, une solution consiste à utiliser setattr lorsque la classe est définie :
class product:
def __init__(self, data, name, **kwargs):
self.data = data
self.name = name
def adding_new_attr(self, attr):
setattr(self, attr, attr)
puis pour ajouter le nouvel attribut appelé par exemple "new_data" il suffit de faire :
setattr(product_01, "new_data", data_02)
product_01.new_data
donne ici
array([ 1, 4, 9, 16, 25, 36, 49, 64])