IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Quelques question sur Python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut Quelques question sur Python
    Bonjour

    Dans le cadre d'un rapport ou je dois analyser Python et le comparer je me pose quelques question dont je ne trouve malheureusement pas les réponses :/ .

    On dit que Python à un typage fort. Qu'est ce que cela signifie vraiment? Car avec le typage dynamique une variable qui contient un "int" peut contenir un long...

    Il y'a t-il en python, comme en java, des classe abstraites ou des interfaces qui ne définissent que des méthodes devant être obligatoirement implémentées par les classe qui héritent. (Si oui il y a t-il une implémentation des listes sur ce modèle?)

    Il y'a t-il des sortes de header qui comme en C permettent de définir des fonctions secondaire après des fonctions principales?

    Merci d'avance de vos réponses???

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut
    Pour la deuxième question j'ai trouvé une réponse je la poste ici pour les futures recherches:

    Interfaces/implémentations

    Dans un soucis de simplicité python n'implémente pas explicitement, contrairement à Java, la mise en oeuvres de "classes abstraites" ou "d'interfaces".

    Il est possible de réaliser implicitement des classes abstraites, des interfaces en créant des méthodes déclenchant, si la méthode est appelée, une exception.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    >>> class vehicule:
    ...     	def __init__(self, position):
    ...             self.position=position
    ...    	def coordonnes(self):				# création d'une méthode virtuelle 
    ...             raise NotImplementedError		# qui génère une exception
     
    >>> a= vehicule(10)					# création d'un objet vehicule
     
    >>> a.coordonnes()					#appel d'une méthode non définie
     
    Traceback (most recent call last):			# une exception est générée
      File "<stdin>", line 1, in ?
      File "<stdin>", line 5, in coordonnes
    NotImplementedError
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    >>> class voiture(vehicule):			#création d'une classe voiture qui hérite de 
    						#véhicule
    ...	def __init__(self, position):		#constructeur
    ...		self.position=position 
    ...	def coordonnes(self):			#surcharge de la méthode coordonnes
    ...		return self.position
     
    >>> a=voiture(10)				
    >>> a.coordonnes()				#la méthode marche
    10
    Cependant on n'a généralement pas recours aux classes abstraites en python celui-ci gérant le concept de « duck typing » dont l'idée est que « If it walks like a duck and quacks like a duck, it must be a duck » (« si ça marche comme un canard et si ça cancane comme un canard, alors ce doit être un canard »).

    Plustôt que de se focaliser sur le type d'un objet il faut avant tout s'assurer qu'on peut lui appliquer les traitements souhaités.

    Par exemple:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class Voiture:
    	def __init__(self, position):
    		self.position=position
    	def coordonnes(self):
    		return self.position
     
    class Avion:
    	def __init__(self, position):
    		self.position=position
    	def coordonnes(self):
    		return self.position
     
     
    for vehicule in [Voiture(10), Avion(5)]:
    	print vehicule.coordonnes()
     
    10
    5

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par Anonymouse
    On dit que Python à un typage fort. Qu'est ce que cela signifie vraiment? Car avec le typage dynamique une variable qui contient un "int" peut contenir un long...
    Il n'est pas possible de convertir un entier en float par exemple (un entier long et un entier seront la même chose dans Python 3.0)

    Le duck Typing, c'est l'équivalent des templates en C++, sans le sucre syntaxique. L'héritage est toujours utile si on garde le paradigme héritage public = IS-A.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Par défaut
    Citation Envoyé par Miles
    Il n'est pas possible de convertir un entier en float par exemple (un entier long et un entier seront la même chose dans Python 3.0)
    Il est possible de convertir un entier en float :Et la dernière version de Python, c'est la 2.5 Mais oui, vivement la 3.0 !

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Implicitement, j'entend.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Par défaut
    Pour ce qui est du typage fort, c'est une notion que je préfère ne pas aborder : tout le monde interprète ces notions de typage fort / faible comme ça l'arrange, il n'y a pas de définition précise, bref, c'est le bazar !

    On retiendra que Python est un langage à typage dynamique : les variables ne sont pas déclarées, et elles ne sont pas typées (c'est leur contenu qui l'est).

    On peut ajouter, en ce qui concerne la POO, que les propriétés et méthodes sont publiques, et qu'en cours d'exécution, on peut supprimer ou ajouter des propriétés à un objet (aussi bien depuis lui-même que depuis un autre objet, ou depuis une procédure). Pour reprendre le canard, on peut lui ajouter une longueur de griffes (même si un canard n'en a pas), et on peut supprimer son âge (ce qui posera un problème quand on voudra le relever).

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut
    Citation Envoyé par Vladislav IV
    Pour ce qui est du typage fort, c'est une notion que je préfère ne pas aborder : tout le monde interprète ces notions de typage fort / faible comme ça l'arrange, il n'y a pas de définition précise, bref, c'est le bazar !

    On retiendra que Python est un langage à typage dynamique : les variables ne sont pas déclarées, et elles ne sont pas typées (c'est leur contenu qui l'est).
    Citation Envoyé par Miles
    Il n'est pas possible de convertir un entier en float par exemple (un entier long et un entier seront la même chose dans Python 3.0)
    Ok c'est ce qua j'avais compris avec: http://fr.wikipedia.org/wiki/Typage_fort
    Je pense que je vais l'aborder brièvement sans trop insister dessus en disant que les définitions du langage fortement typé sont assez nombreuses.

    Citation Envoyé par Miles
    Le duck Typing, c'est l'équivalent des templates en C++, sans le sucre syntaxique. L'héritage est toujours utile si on garde le paradigme héritage public = IS-A.
    Je ne fais pas de C++ mais seulement du C et du java (et pas à un haut niveau) mais je pense avoir bien cerné le concept qui à l'air intéressant.

    Citation Envoyé par Vladislav IV
    On peut ajouter, en ce qui concerne la POO, que les propriétés et méthodes sont publiques, et qu'en cours d'exécution, on peut supprimer ou ajouter des propriétés à un objet (aussi bien depuis lui-même que depuis un autre objet, ou depuis une procédure). Pour reprendre le canard, on peut lui ajouter une longueur de griffes (même si un canard n'en a pas), et on peut supprimer son âge (ce qui posera un problème quand on voudra le relever).
    C'est une des choses qui m'a étonné car si le programmeur n' est pas rigoureux ca peut poser des problèmes.
    J'ai l'impression que Python autorise beaucoup de choses même si elle ne sont pas forcément très recommandées après c'est au programmeur de s'adapter

    Pour l'application que l'on doit développer on avait d'abord pensé à un jeu pour une école primaire et notre professeur ce système nous à brièvement expliqué le concept d'Object Request Broker et peut être que nous allons développer une application sur plusieurs processus.

    Savez vous si la chose est faisable en Python?

    merci de toute vos réponses :d

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tout est faisable en Python

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Miles
    En préfixant avec __, on peut ajouter des pseudo-variables privées, pas vraiment privées, mais un peu plus difficile d'accès.
    Effectivement, il est possible d'utiliser les propriétés pour les accès, mais derrière, il y a vraissemblablement une variable en __x.
    Hum ok Miles, merci de m'avoir éclairé, c'est donc bien à peu près ce dont je me souvenais

    A ce propos, pourquoi les concepteurs de Python ont-ils effectué le choix de ne pas implémenter une encapsulation "stricte" pour Python ? Soucis de simplifier le travail des développeurs, de réduire le volume de code à produire (je pense notamment aux accesseurs), ou d'autres raisons ???

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Par simplicité sans doute, effectivement.
    Et ce qui est vraiment bien, c'est que si on a besoin d'accesseur d'un coup c'est facile à mettre en place, sans changer le code, contrairement au C++ !

Discussions similaires

  1. Quelques questions sur PYTHON
    Par Jiyuu dans le forum Général Python
    Réponses: 8
    Dernier message: 01/02/2008, 11h41
  2. Réponses: 19
    Dernier message: 21/10/2005, 19h24
  3. Quelques questions sur la mémoire
    Par Gruik dans le forum C
    Réponses: 6
    Dernier message: 17/11/2004, 14h38
  4. Quelques question sur Win 32 Appli
    Par lvdnono dans le forum Windows
    Réponses: 5
    Dernier message: 15/06/2004, 12h37
  5. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo