''' @author: olivier.massot, févr. 2018 ''' class Model(): """ Modèle de données d'un objet """ _FIELDS = [] def __init__(self): """ Génère un objet vide, les propriétés de l'objet sont générées automatiquement à partir de la variable de classe _FIELDS""" for fld in self._FIELDS: setattr(self, fld, None) def __repr__(self): return "<{} => {}>".format(self.__class__.__name__, ",".join(["{}={}".format(field, getattr(self, field)) for field in self._FIELDS])) @classmethod def from_dict(cls, data): """ Retourne un objet à partir d'un dictionnaire de données """ facture = cls() for key, value in data.items(): setattr(facture, key, value) return facture def to_csv(self): """ Renvoie une chaine de caractère correspondant aux données de l'objet au format CSV Séparateur = tabulation (car c'est un caractère interdit dans Access) """ return "\t".join([str(getattr(self, field)).replace("\t", " ") for field in self._FIELDS] + ["\n"]) @classmethod def from_csv(cls, line): """ Retourne un objet Facture à partir d'une ligne de texte au format CSV Séparateur = tabulation (car c'est un caractère interdit dans Access) """ return cls.from_dict(dict(zip(cls._FIELDS, line.split("\t"))))