# coding: utf-8 # Marche en python 3 ! ### définition de la gestion des complexes ### # On passe par un dictionnaire pour stocker les attributs re et im, # mais aussi des fonctions de manipulation (que l'on appelle # Complex_*). def Complex_str(mon_dico) : return "{} + i * {}".format(mon_dico['re'], mon_dico['im']) def Complex_raz(mon_dico) : mon_dico['re'] = 0 mon_dico['im'] = 0 def Complex_conj(mon_dico) : resultat = {} # nouveau dictionnaire vide Complex_init(resultat, mon_dico['re'], -mon_dico['im']) return resultat def Complex_i() : resultat = {} # nouveau dictionnaire vide Complex_init(resultat, 0, 1) return resultat def Complex_from_real(r): resultat = {} # nouveau dictionnaire vide Complex_init(resultat, r, 0) return resultat def Complex_init(mon_dico, re, im) : # Ajout des attributs mon_dico['re'] = re mon_dico['im'] = im # Ajout des méthodes non statiques (celles qui ont un argument mon_dico) mon_dico['str'] = Complex_str mon_dico['raz'] = Complex_raz mon_dico['conj'] = Complex_conj # On ne met pas les méthodes statiques (celles qui n'ont pas d'argument mondico) # mon_dico['i'] = Complex_i # mon_dico['from_real'] = Complex_from_real ### Utilisation #### c = {} Complex_init(c, 3, 4) c_ = c['conj'](c) # on pioche la fonction dans le dictionnaire, et on l'appelle... # ...sur lui-même (d' où le nom self avec les classes) print(c['str'](c)) print(c_['str'](c_)) c['raz'](c) print(c['str'](c)) c = Complex_i() print(c['str'](c)) c = Complex_from_real(3.14) print(c['str'](c))