[gull] python2.5 et type(x)

Daniel Cordey dc at mjt.ch
Mon Aug 4 16:54:57 CEST 2008


On Friday 01 August 2008 05:05:51 Philippe Strauss wrote:

> je connais très peu c++.

L'examen du code C genere pour compiler du code C++ est extremement instructif 
:-) 

> mais le compilo en fait quoi, c'est juste une "features" pour l'overloading
> d'opérateurs de base ou cela va plus loin et en fait une vraie utilisation
> à la compilation pour (entre autre) débusquer des erreurs humaines?

En-dehors des erreurs flagrantes de typos, de declarations manquantes etc. le 
compilateur ne detecte aucune erreur humaine. Ces erreurs sont aussi detectees 
dans les langages interpretes puisque le processus est le meme : 
lexique/syntaxe/semantique...

La gestion des classes en Python est tres elegante et tres souple. je peux 
(re)definir n'importe quelle methode en Python. Or, comme les operateurs sont 
des methodes, il est tres facile de redefinir n'importe quel operateur. Les noms 
des methodes utilisees comme operateurs sont definis de maniere conventionnelle. 
Il suffit donc de definir une methode __add__(self, other) dans une classe, pour 
que celle-ci dispose, ou redefinisse, l'operateur '+'. Ceci est aussi valable 
lors de l'heritage d'une classe... il suffit de redefinir cette methode pour en 
changer le comportement. Lors de l'interpretation du code, lors de 
l'interpretation d'une expression contenant un operateur, l'interpreteur va 
tenter d'appeler la methode liee a l'objet. C'est entierement dynamque, mais 
naturellement plus lent que ce que fait C++, qui impose des definitions 
permettant de determiner ce qui est statique de ce qui ne l'est pas.

dc





More information about the gull mailing list