import datetime from dataclasses import dataclass,field @dataclass(slots=True) # ! cela veut dire que pas de __dict__ dans les instances !!! class DacCols: compte: str datecomptable: str datevaleur: str reference: str opdate: str valid: bool = field(init=False,compare=False) def __post_init__(self): self.valid = True self.validate_fields() def validate_fields(self): """validation des champs sauvés dans la dataclass""" for thisdate in (self.datevaleur,self.opdate,self.datecomptable): if thisdate is self.datevaleur: pr = True else: pr = False if pr: print(f'START:{thisdate} --- {thisdate is self.datevaleur} --- {type(thisdate)} --- {id(thisdate)}') if 'T' in thisdate: # remp if pr: print(f'AVANT:{thisdate} --- {thisdate is self.datevaleur} --- {type(thisdate)} --- {id(thisdate)}') thisdate = thisdate.replace('T',' ') if pr: print(f'APRES:{thisdate} --- {thisdate is self.datevaleur} --- {type(thisdate)} --- {id(thisdate)}') self.datevaleur = self.datevaleur.replace('T',' ') print(f'APRESTOUT:{self.datevaleur} --- {self.datevaleur is self.datevaleur} --- {type(self.datevaleur)} --- {id(self.datevaleur)}') print("OUT:",self.datevaleur,self.opdate,self.datecomptable) class StdCols: def __init__(self,compte='', datecomptable='', datevaleur='', reference='', opdate=''): self.compte = compte self.datecomptable = datecomptable self.datevaleur = datevaleur self.reference = reference self.opdate = opdate self.valid = False self.validate_fields() def validate_fields(self): """validation des champs sauvés dans la dataclass""" for thisdate in (self.datevaleur, self.opdate, self.datecomptable): if thisdate is self.datevaleur: pr = True else: pr = False if pr: print(f'START:{thisdate} --- {thisdate is self.datevaleur} --- {type(thisdate)} --- {id(thisdate)}') if 'T' in thisdate: # remp if pr: print( f'AVANT:{thisdate} --- {thisdate is self.datevaleur} --- {type(thisdate)} --- {id(thisdate)}') thisdate = thisdate.replace('T', ' ') if pr: print( f'APRES:{thisdate} --- {thisdate is self.datevaleur} --- {type(thisdate)} --- {id(thisdate)}') self.datevaleur = self.datevaleur.replace('T', ' ') print( f'APRESTOUT:{self.datevaleur} --- {self.datevaleur is self.datevaleur} --- {type(self.datevaleur)} --- {id(self.datevaleur)}') print("OUT:", self.datevaleur, self.opdate, self.datecomptable) def main(): DAC = DacCols(compte='XXXXXXX', datecomptable='2021-05-07T00:00:00.000', datevaleur='2021-05-01T00:00:00.000', reference='2021-00008', opdate='2021-05-12T00:00:00.000') print(DAC) CLA = StdCols(compte='XXXXXXX', datecomptable='2021-05-07T00:00:00.000', datevaleur='2021-05-01T00:00:00.000', reference='2021-00008', opdate='2021-05-12T00:00:00.000') print(CLA) if __name__ == '__main__': main()