Comment ajouter dynamiquement de nouveaux attributs à une classe en python ?

Published: 18 juillet 2021

Tags: Python; Class;

DMCA.com Protection Status

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])

Références