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 :

Python et Programmation orientée objet


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Python et Programmation orientée objet
    Bonjour
    J'essaie de programmer un robot en Python. J'y arrive sans POO, mais pas en POO.
    J'utilise la version AmiensPython de Python.
    J'ai mis les 2 versions dans mon fichier joint.

    Sans POO : je déplace un carré jaune horizontalement de 10 cases ; le déplacement est réalisé avec cnv1.coords(), où cnv1 est le nom du canevas qui contient le dessin.
    Avec POO, ça ne marche pas.

    Quelqu'un peut-il m'aider ?
    Merci.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Dans ce que vous appelez "sans POO", rob sauvegarde le retour de .create_rectangle qui est l'item identifier (iid) de l'objet crée dans le canvas.
    Vous l'utilisez en suite pour les deplacements via cnv1.coords(rob...)

    La version POO omet de sauvegarder cet iid et passe l'instance de Sprite récupérée dans la variable globale "robot" à .coords

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Je comprends à peu près votre réponse (je programme en Python depuis 2 mois seulement, et j'essaie la programmation objet depuis 1 semaine, sur les conseils de mon fils), mais je ne vois pas comment l'utiliser.

    Après avoir créé mon objet-sprite robot, je dois mémoriser son iid ?

    Merci.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Dans le code, robot est une instance de Sprite(), il n'est donc pas normal de retrouver robot dans la méthode afficher(), ce devrait être self.

    Par contre, ce qui me surprend c'est que ce code est impossible à tester.

    Il comporte deux caractères non ascii en début de ligne 1 impossible à supprimer. Ils n'apparaissent pas dans mon éditeur.

    Je ne peux décrire cela qu'avec une capture d'écran.
    Images attachées Images attachées  

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Oui, le fichier commence par FF FE: c'est le "BOM utf-16 Little Indian" (http://en.wikipedia.org/wiki/Byte_order_mark) placé à l'enregistrement par l'éditeur de texte.

    C'est le cas, par exemple, sous Windows quand on utilise le "bloc-note" et qu'on enregistre en "unicode". Mais si on choisit d'enregistrer en "utf-8", ce n'est pas mieux: le BOM devient alors EF BB BF. Il n'y a qu'en enregistrant en "ANSI" (cp1252) que rien n'est ajouté par cet éditeur.

    Certains éditeurs comme "notepad++" permettent de retirer ce BOM: on ouvre, on demande l'encodage en "utf-8 sans BOM" et on "enregistre sous". Sinon, il faut le retirer avec un petit code en Python (lecture/écriture binaire).
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Emacs est un éditeur suffisamment robuste pour ne même pas avoir sourciller sur ces détails.

    Après avoir créé mon objet-sprite robot, je dois mémoriser son iid ?
    L'iid est ce que vous appelez "rob" dans la partie "sans POO"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        rob = cnv1.create_rectangle(xr*patch, yr*patch, (xr+1)*patch, (yr+1)*patch, fill='yellow')
        for i in range(10):
            #print xr+i
            cnv1.coords(rob, (xr+i)*patch, yr*patch, (xr+i+1)*patch, (yr+1)*patch)
    Dans Sprite vous ne sauvez pas le retour de .create_rectangle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        def __init__(self, positionX, positionY, couleur): ...
            cnv1.create_rectangle(floor(self.positionX)*patch,...) #
     
        def afficher(self):
            cnv1.coords(robot, floor(self.positionX), ...)
    Profitez en pour relire la documentation sur .create_rectangle, .coords,... vous êtes quand même supposé comprendre les méthodes que vous utilisez.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci pour vos réponses.
    Je me remets au travail.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/05/2011, 10h41
  2. [POO] apprendre la programmation orientée objet
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 10/12/2005, 11h33
  3. [DEBUTANT] Conseil sur la programmation orienté objet
    Par etiennegaloup dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2005, 12h59

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