bonjour,
j'aurais voulu savoir si il existe le systeme d'interface en python?
cad, je veux etre sur que les classes qui herite de la classe A ont implémenté certaines méthodes et ce au moment du chargement et non au moment de l'utilisation
merci
a++
bonjour,
j'aurais voulu savoir si il existe le systeme d'interface en python?
cad, je veux etre sur que les classes qui herite de la classe A ont implémenté certaines méthodes et ce au moment du chargement et non au moment de l'utilisation
merci
a++
Bien que ce ne soit pas vraiment dans l'esprit python (et même des langages dynamiques) il est possible d'avoir un concept d interface en python avec du code de ce type :
Sinon il y a Zope qui avait introduit une notion d'interface en python mais je ne connais pas tres bien donc je ne peux pas en dire plus (faut savoir que zope n'est pas tres ... pythonique ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class MyInterface: def myMethod(self,a): raise NotImplementedError class MyImplementation(MyInterface): def myMethod(self,a): print "hello " + a class NotImplemented(MyInterface): pass a = MyImplementation() a.myMethod("toto") b = NotImplemented() b.myMethod("toto")
Mais il faut savoir que la philosophie de python c'est plutôt le duck typing qu'un système d'interface
merci pour le concept.
simple et efficace.
![]()
On peut également utiliser la métaprogrammation comme dans l'article de Raymond Hettinger dans "Python Cookbook, 2nd edition" chez O'Reilly (recette 20.9: "Checking whether interfaces are implemented"). Tu peux également consulter le cookbook en ligne sur le site de ActiveState: ASPN.
La solution proposée par anthyme a l'avantage d'être simple. N.B. Il existe une exception standard appelée NotImplementedError qui peut être utilisée à cet effet.
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Partager