Bonjour,

J'ai un soucis avec l'utilisation de la fonction copy.deepcopy : la copie de l'instance de la classe décrite ci-dessous ne possède pas les attributs de l'original :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
# -*- coding: utf8 -*-
 
import numpy
import copy
 
class Referentiel(numpy.ndarray):
    def __new__(subtype, nom_element, data):
 
        try:
            assert len(data) == 6
        except AssertionError:
            raise ValueError, u"Erreur : l'argument 'data' de la classe 'Referentiel' doit etre une liste de longueur 6"
 
        if isinstance(data, Referentiel):
            return data
 
        arr = numpy.array([float(i) for i in data])
        return numpy.ndarray.__new__(Referentiel, shape=6, dtype=float, buffer=arr)
 
    def __init__(self, nom_element, data):
 
        self.element = nom_element
 
 
if __name__ == "__main__":
 
    ref = Referentiel("test", [1, 2, 3, 4, 5, 6])
    ref2 = copy.deepcopy(ref)
 
    if hasattr(ref, "element"): print "ref a un attribut 'element'"
    if not hasattr(ref2, "element"): print "ref2, copie de ref, n'a pas d'attribut 'element'"
Est-ce que quelqu'un a déjà rencontré ce problème ?
Merci d'avance.