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'" |
Partager