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 :

Problème avec Poo


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Par défaut Problème avec Poo
    Bonjour,


    Dans mon apprentissage Python, je suis entrain d'étudier la POO.
    J'ai réussi à jouer avec l'utilisation d'une seule classe.
    Maintenant, je veux utiliser deux classes, et j'ai un petit soucis.
    Voici un exemple de ce que je n'arrive pas à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def Maclasse1:
        def __init__(self, x = 1):
            self.x = 0 
     
        def ajout(self, u):
            self.x = self.x + u
     
    def Maclasse2:
        def additionner(self, r):
            Maclasse1.ajout(r)
     
    machin = Maclass1()
    pouet = machin.ajout(3)
    À partir de là, je voudrais pouvoir appeler la méthode additionner de Maclasse2(qui utilisera la méthode ajout de la Maclasse1). Je n'y arrive pas.
    Plus concrètement, j'ai fait une première classe ou j'instancie des objets. Ma seconde classe sert à me créer une interface graphique (avec GTK). Je voudrais, en cliquant sur un bouton, qu'il me rajoute une valeur à l'attribut self.x de mon objet machin.

    Je ne sais pas si je suis très clair. Je ne met pas le code pour l'instant, car il est encore assez fouilli et pas forcément des plus lisible, mais j'espère qu'avec l'exemple que je vous ai décris, vous allez comprendre ce que je veux.

    Merci à toutes et tous.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    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
    Maclasse1:
        def __init__(self, x = 1):
           self.x = 0
     
        def ajout(self, u):
            self.x = self.x + u
     
    Maclasse2(Maclasse1):
        def additionner(self, r):
            self.ajout(r)
     
    machin = Maclass2()
    pouet = machin.ajout(3)
     
    truc = machin.additionner(12)
    mais je ne suis pas sûr de moi.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Par défaut
    Merci josmiley pour ta réponse rapide.

    En fait, Maclasse2 est une boucle (interface graphique gtk).
    Dans cette interface, il y a un bouton qui doit utiliser une méthode de Maclasse1 (pour l'objet machin).

    Je suis novice, donc je ne m'exprime peut être pas très clairement

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Par défaut
    josmiley,

    Je viens de tester ta solution. J'ai fait ça avec des classes plus simple que ce que je n'avais fait, et pour l'instant, le resultat obtenu me semble correspondre à ce que je voulais.
    Merci à toi.
    Pour l'instant, je laisse le post en stand by.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Salut,

    Je serais intéressé de voir ce que signifie
    appeler la méthode additionner de Maclasse2
    pour toi, D3bian.

    Je ne vois aucune définition de classe dans vos codes, seulement des définitions de fonctions, et encore est-ce avec une erreur de syntaxe puisqu'il faut des parenthèses après le nom d'une fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #Pour déclarer une classe:
    class  Maclasse1:
     
    #Pour déclarer une fonction, ici sans paramètre:
    def  Maclasse1():



    Cette file a été vue 30 fois au moment où j'écris, et personne pour le signaler.




    En outre, une fois que tu auras fait de Maclasse1 une classe, il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class  Maclasse2( Maclasse1):
    pour faire hériter Maclasse2 de Maclasse1.





    Par ailleurs, quand je lis
    j'ai fait une première classe où j'instancie des objets
    je tique, parce que je comprends ça d'une certaine façon et je me dis: on n'instancie rien du tout DANS une classe, une instanciation se fait EN DEHORS de toute classe en appelant une classe comme si on appelait une fonction:

    Class instantiation uses function notation. Just pretend that the class object is a parameterless function that returns a new instance of the class.

    http://www.python.org/doc/2.6.2/tuto...#class-objects

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Par défaut
    Bonjour eyquem,

    Pour le code, je me suis trompé dans l'empressement d'ecrire mon post.
    Merci d'avoir relevé l'erreur.

    Ensuite pour l'instanciation, je te remercie de la définition. Étant débutant en programmation, j'ai encore du mal à tout assimiler.

    J'ai un peu avancé mon programme depuis ce matin, mais je vais devoir encore me faire la main sur les classes, avant de les maitriser.

    Encore merci pour ton intervention

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DEBUTANT] Problème avec la POO
    Par Luffy49 dans le forum Langage
    Réponses: 17
    Dernier message: 19/03/2007, 23h35
  2. [POO] Problème avec $this de PHP4 à PHP5
    Par c4l3m dans le forum Langage
    Réponses: 19
    Dernier message: 16/02/2007, 09h48
  3. [POO] Problème avec setInterval/méthodes d'écriture
    Par Lpu8er dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/07/2006, 15h37
  4. [POO] PHP5 : Problème avec les classes
    Par fleur_de_rose dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2006, 19h09
  5. [POO] Problème avec l'utilisation de classes.
    Par sekiryou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 18h54

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