[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux] Re: petite info sur phyton
Hello !
On Fri, May 04, 2001 at 07:14:14PM +0200, Gerd-Christian Michalke wrote:
> Bonjour !
[clip]
> En fait ja'merais bien utiliser qd meme python pour l'une ou l'autre
> bricole surtout a cause d'une syntaxe claire. Question: esske python
> supporte-t'il le polymorphisme ? Attention: les classes, ca je sais, j'ai
> deja essaye aussi pourfaire de l'heritage. Mais le polymorphysme, le vrai
> avec des methodes virtuelles (ou abstraites, c'est selon) ?
Le langage Python utilise un 'binding' dynamique, ce qui signifie qu'il
recherche les méthodes au moment où il en a besoin. Tous les appels sont
donc virtuels (au sens C++/Java). On peut voir la nature dynamique dans
le petit exemple suivant (on appelle une méthode 'bar' de la classe 'A'
qui n'existe pas encore lors de la compilation) :
class A:
def foo (self, bar):
print 'Foo said: ' + bar
def main ():
a = A ()
a.bar = a.foo
a.bar ('Hello, World')
main ()
Les variables (et/ou instances) n'étant pas déclarées et également
dynamiques, il n'y a pas de résolution à la compilation (Python est
compilé en bytecode avant l'exécution) :
Python : Bytecode :
a.foo ('Hello, World') 18 LOAD_FAST 0 (a)
21 LOAD_ATTR 2 (foo)
24 LOAD_CONST 1 ('Hello, World')
27 CALL_FUNCTION 1
Quant aux méthodes/fonctions surchargées, elles n'existent pas
directement en python, puisque les types sont dynamiques :
def foo (bar):
if (type (bar) == types.StringType):
print ('String !')
elif (type (bar) == types.IntType):
print ('Int !')
else:
print ('Inconnu !')
> Merci a l'avance
> Gerd
Cu,
Dash.
--
The problem with "What You See Is What You Get" is that what you see is
all you've got.
-- Brian Kernighan
--
Damien Diederen
dash@linuxbe.org
http://users.swing.be/diederen/
[ Soyez précis dans vos sujets svp afin de déterminer directement ]
[ le type de demande... ]
[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php ]
[ http://LinuxBe.org Contact: listmaster@linuxbe.org ]