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
[EMAIL PROTECTED]
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: [EMAIL PROTECTED]  ]

Répondre à