PolymorphismePolymorphisme sur inférence de type

Nous avons vu au chapitre Raisonnement automatique, section Raisonnement en monde ouvert que, lors du raisonnement, les classes des individus et les superclasses des classes pouvaient être modifiées. Dans ce cas, les méthodes disponibles peuvent changer. De plus, en cas de polymorphisme, c’est-à-dire lorsque plusieurs classes exploitent la même méthode de manière différente, l’implémentation de la méthode pour un individu ou une classe peut changer. C’est le « polymorphisme sur inférence de type ».

Voici un exemple simple :

>>> ma_bacterie = onto.Bactérie(gram_positif = True,  
...     a_pour_forme = onto.Ronde(),  
...     a_pour_regroupement = [onto.EnAmas()] )  
>>> ma_bacterie.méthode()  
C'est une bactérie ! 

Nous avons créé une bactérie. Lorsque nous exécutons la méthode, c’est l’implémentation de la classe Bactérie qui est donc appelée. Nous allons maintenant appeler le Raisonneurraisonneur.

>>> sync_reasoner() 

Le raisonneur a déduit que la bactérie est en fait un Staphylocoque (à partir de ses relations). À présent, si nous appelons la méthode, c’est l’implémentation du Staphylocoque qui est appelée :

>>> ma_bacterie.méthode()  
C'est un staphylocoque...
Pour consulter la suite, découvrez le livre suivant :
couv_EPPYTONT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Associer un module Python à une ontologie
Suivant
Introspection