• [^] # Re: switching cases finally

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche Python 3.10 est disponible. Évalué à 4.

    case Canard() veut un objet dont la classe Canard se trouve dans la mro (method resolution order) de la classe de l’objet testé. En gros, suffit que ça hérite d’une façon ou d’une autre.

    C’est un exemple, c’est très utile avec les frameworks qui génèrent une hiérarchie d’objets correspondant à une pile graphique/de widgets par exemple.

    Si tu veux faire un test qui permet de tester si ça couac comme un canard, tu peux le faire en faisant case obj if hasattr(obj, 'couac'):. L’instruction isinstance de Python n’a pas empêcher d’utiliser le duck-typing par ailleurs.