Bonjour,
Le pattern N.V.I., pour "non virtual interface" a été proposé par Herb Sutter dans son article "Virtuality, C/C++ Users Journal, 19(3), 2001" disponible ici:
http://www.gotw.ca/publications/mill18.htm
En résumé, il recommande, (quand on développe en C++) de rendre les fonctions virtuelles privées, et d'écrire une interface publique non virtuelle. Pour plus de détails sur ce pattern, je vous invite à lire l'article.
Utilisateur de python depuis peu, j'ai par réflexe appliqué les même recettes, considérée comme des bonnes pratiques dans mon langage de référence. Seulement le comportement qui en résulte n'est pas celui que j'attendais. En effet, si on considère l'exemple suivant:
A l'éxécution, ce code imprime
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
là ou je m'attendais à
Code : Sélectionner tout - Visualiser dans une fenêtre à part coin coin
On peut en déduire que le fait que __foo_impl_private soit privée empêche la classe de base d'appeler l'implémentation de la classe dérivée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Quelqu'un peut-il m'éclairer sur ce comportement ? Il semble que l'idée préconçue selon laquelle les méthodes de classes en python se comportent comme des méthodes virtuelles en C++ soit erronée.

 

 
		
		 
         
 

 
			
			




 Non-Virtual-Interface pattern et Python
 Non-Virtual-Interface pattern et Python
				 Répondre avec citation
  Répondre avec citation

 
   
 
			
			
 
			 
 
 
			 Envoyé par fred1599
 Envoyé par fred1599
					
 .
.
Partager