Salut,
Puisqu'on discute horreurs permises par la programmation dynamique.
Il y a quelques temps je me suis intéressé à la simplification de patterns GOF que permettait Python. Un de ceux là est "State".
En gros, pour représenter l'état d'un objet on lui associe une classe S1, S2, S3, .... qui sont sous-classe d'une classe abstraite A.
L'état est donc mémorisé dans un attribut style self._state = S1(...).
En fonction de... l'état de notre objet doit être changé pour refléter le nouvel état. Classiquement self._state = S2(...) ce qui crée une instance de S2 et libère S1.
Une façon permise par Python et à n'utiliser que si on comprends ce qu'on fait pour 'changer' l'état est de faire: self._state.__class__ = S2
On peut donc "s'amuser" à changer des choses bien plus "tordues" juste parce que le monde python est un __dict__ de __dict__
- W
Partager