Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation de 2 classes pour 2 événements

    1 février 2023 à 12:34:21

    Bonjour,

    N'étant pas habitué à utiliser des classes, je suis en train d'apprendre. Je voudrais créer un script comprenant deux classes, dont l'une consiste à récupérer des données numériques de type réel (ou float) saisies au clavier et l'autre à en faire la somme. J'avais pensé utiliser la méthode d'instance, des variables d'instance et enfin le concept d'héritage avec pour parent la classe "choix" et pour enfant "calcul". Pour le moment cela ne marche pas. 

    Bien évidemment, le travail ci-dessous est incomplet voire en partie erroné. 

    Quelqu'un aurait-une suggestion ? 

    Merci à vous. 

    class Choix:
        def __init__(self,x,y):
            self.x=x
            self.y=y
        def choose(self):
            print("x=")
            x=input()
            print("y=")
            y=input()
            
    class Calcul (Choix):
        def __init__(self,x,y,somme):
            Choix.__init__(self,x,y)
            self.somme=somme
        def somme(self):
            somme=x+y
            print("{0}+{1}={2}".format(self.x,self.y,somme))
    
    MyInstance=Choix
    MyInstance2=Calcul
    MyInstance2.somme



    -
    Edité par LHH_120 1 février 2023 à 12:36:02

    • Partager sur Facebook
    • Partager sur Twitter
      1 février 2023 à 12:42:34

      Désolé mais aucun intérêt , ni pratique ni pédagogique .
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        1 février 2023 à 12:53:18

        @josmiley, +1

        La POO commence par les classes quand on entre dans la syntaxe des langages, mais ce n'est pas cela la POO... Ça ne représente pas qu'une syntaxe de langages de programmation, c'est une vision concrète et réelle d'un problème représentée par des objets.

        Pour faire cela, on doit se représenter une problématique en adéquation avec la POO, ce n'est absolument pas le cas ici.

        Déjà Calcul ne représente pas un objet, c'est une action, donc soit on là place dans une méthode de classe, soit on crée tout simplement une fonction.

        Pour Choix, quelles sont les actions liées à cette entité ?

        Du coup je t'invite à avoir une réflexion plus poussée sur une problématique pour faire de la POO. Par exemple le jeu "bataille navale", où tu pourrais découper en diverses entités du jeu, sous forme d'objets...

        • Partager sur Facebook
        • Partager sur Twitter

        Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
        La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

          1 février 2023 à 13:29:35

          Etudiant31 a écrit:

          B

          class Choix:
              def __init__(self,x,y):
                  self.x=x
                  self.y=y
              def choose(self):
                  print("x=")
                  x=input()
                  print("y=")
                  y=input()
                  
          class Calcul (Choix):
              def __init__(self,x,y,somme):
                  Choix.__init__(self,x,y)
                  self.somme=somme
              def somme(self):
                  somme=x+y
                  print("{0}+{1}={2}".format(self.x,self.y,somme))
          
          MyInstance=Choix
          MyInstance2=Calcul
          MyInstance2.somme



          On voit que tu n'as pas compris des choses très basiques comme la différence entre une classe et une instance, le rôle de __init__ voire et surtout, au-delà de la POO, que tu n'as pas compris la notion de service et d'interface implicites à la création et l'appel d'une fonction (après tout une méthode est une fonction), autrement dit tu n'as sans doute pas suffisamment codé de petits projets utilisant des fonctions. Et l'utilisation de l'héritage doit venir bien après avoir compris les bases de la POO en Python. Je ne connais pas de cours progressif et clair sur la POO en Python. Peux-être dans des manuels de NSI depuis que c'est enseigné dans les lycées.
          • Partager sur Facebook
          • Partager sur Twitter
            1 février 2023 à 16:16:53

            Peut-être le problème est-il mal posé pourtant cela me semblait clair.  Je vais revoir cela. 

            Toutefois 2 objets existent : MyInstance et MyInstance2 puisque une instance est un objet.

            "__init__" consiste à déclarer des variables ou dit autrement des attributs. 

            Les éléments "def_<nom>" désignent des méthodes dans les classes dès lors qu'on les trouve dans les classes sinon ce sont des fonctions. Pour moi, un objet est lié à des actions. C'était ma vision dans cette situation particulière mais au vu de vos interventions, ma représentation du concept de classe est restrictive. Je vais abandonner l'héritage pour le moment. 

            Pour information plusieurs exemples que j'ai trouvés sur le WEB mettent en avant des situations d'utilisation pas très éloignées de la mienne que j'ai imaginée mais sans qu'ils soient d'une grande complexité. 

            -
            Edité par LHH_120 1 février 2023 à 16:24:03

            • Partager sur Facebook
            • Partager sur Twitter
              1 février 2023 à 16:22:43

              Un instance ne se crée pas de cette manière, revoir la documentation où tu as vu cela.

              L'exécution d'une méthode non plus.

              -
              Edité par fred1599 1 février 2023 à 16:23:19

              • Partager sur Facebook
              • Partager sur Twitter

              Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
              La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

              Utilisation de 2 classes pour 2 événements

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown