Bonjour,
Je souhaiterai creer en Python une classe mere et obliger toutes classes filles a implementer des fonctions bien specifiques.
Je ne trouve cependant aucun moyen de le faire !!
quelqu'un a une idee
merci
Version imprimable
Bonjour,
Je souhaiterai creer en Python une classe mere et obliger toutes classes filles a implementer des fonctions bien specifiques.
Je ne trouve cependant aucun moyen de le faire !!
quelqu'un a une idee
merci
En python il n'y pas de mot clee pour definire une interface ou une methode virtuel/virtuelle pure.
Python n'est pas un langage compilé ce qui nous donne beaucoup de liberté concernant la manipulation d'objets
Une solution consiste à utiliser les exceptions pour creer une classe de base.
Voici la un exemple que j'ai trouvé ...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 #voici l'interfcae class MonInterface: '''Un exemple d'interface en python ''' def __init__(self): if self.__class__ is AbstractBase: raise NotImplementedError def virtuellePure1(self): raise NotImplementedError def virtuellePure2(self): raise NotImplementedError #classe fille qui n'implemente pas l'uine des methodes donc ca ne marche ra pas class Fille1(MonInterface): def __init__(self): print "Instanciation de Fille1" def virtuellePure1(self): print "virtuellePure1" #classe fille qui marche class Fille2(MonInterface): def __init__(self): print "Instanciation de Fille1" def virtuellePure1(self): print "virtuellePure1" def virtuellePure2(self): print "virtuellePure1" #ca doit marcher test1 = Fille2() test1.virtuellePure1() test1.virtuellePure2() #on poura instancier Fille1 et appeler virtuellePure1 mais pas virtuellePure2 test2 = Fille1() test2.virtuellePure1() test2.virtuellePure2() #ca ne marchera pas parce qu'il n'est pas possible d'instancier une interface test3 = MonInterface() test3.virtuellePure1() test3.virtuellePure2()
Il y a également moyen d'empêcher l'instanciation d'une classe qui n'a pas redéfini toutes les méthodes abstraites (= virtuelles pures) dont elle hérite, mais c'est plus compliqué; voir ici: http://aspn.activestate.com/ASPN/Coo.../Recipe/266468.