Bonjour,
Je souhaiterais utiliser des méthodes abstraites en python, quelqu'un a-t-il un exemple de ce type ?
Version imprimable
Bonjour,
Je souhaiterais utiliser des méthodes abstraites en python, quelqu'un a-t-il un exemple de ce type ?
Python n'a pas de classes ou de méthodes abstraites.
Une methode abstraite et une methode qui est déstinéeàa etre redéfinie plus tard (lors de futur operation d'héritage).
Python ne permets pas de les gerer nativement (et on perd pas grand chose, a mon avis) mais il est quand meme possible de simuler un tel comportement.
Imagine que tu veux définir une methode abstraote MA dans le classe C
tu pourra faire:
Comme ça, si jamais tu creer une class D qui hérite de C et qui redéfinie MA tu pourra utilise MA de la classe D, mais si quelqu'un essai d'utiliser MA directement de la class C il levera une exception.Code:
1
2
3
4
5
6
7 class AbstractMethodAccess(Exception): pass class C: def MA(): raise AbstractMethodAccess
Il est " conseillé " de lever l'exception NotImplementedError dans le cas d'une methode abstraite.
On peut aussi utiliser une metaclasse. On peut ainsi lever une exception lors de la tentative d'instanciation de la classe abstraite au lieu de lors de l'appel de la méthode abstraite.
Voir ici:
http://aspn.activestate.com/ASPN/Coo.../Recipe/266468
On dirait que les classes abstraites sont au menu de Python 3000:
http://www.python.org/dev/peps/pep-3119/
http://svn.python.org/view/sandbox/t...79&view=markup