Je suis entrain de me former à Python. Comment expliquer ce comportement, et comment faudrait-il modifier le code pour avoir un bon fonctionnement ?
Le comportement observé est du au fait que les arguments optionnels ne sont évalués qu'une seule fois lors de la définition de la fonction. S'ils sont mutables, et qu'on les affecte comme attribut aux objets de la classe, ils ne sont alors pas propre aux objets mais deviennent des variables de classe. Pour éviter cela, si ce n'est pas ce que l'on souhaite, il faut utiliser la solution de flan et utiliser la valeur None comme paramètre par défaut, puis tester dessus pour avoir des listes vides différentes pour chaque objet de la classe.
[^] # Re: On s'en bat le steak
Posté par kantien . En réponse au journal Typage statique pour Python. Évalué à 3.
Le comportement observé est du au fait que les arguments optionnels ne sont évalués qu'une seule fois lors de la définition de la fonction. S'ils sont mutables, et qu'on les affecte comme attribut aux objets de la classe, ils ne sont alors pas propre aux objets mais deviennent des variables de classe. Pour éviter cela, si ce n'est pas ce que l'on souhaite, il faut utiliser la solution de flan et utiliser la valeur
Nonecomme paramètre par défaut, puis tester dessus pour avoir des listes vides différentes pour chaque objet de la classe.En OCaml, par exemple, les arguments optionnels sont implicitement représentés par le type polymorphe
'a option:Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.