Partage
  • Partager sur Facebook
  • Partager sur Twitter

Déclarer var en None

Sujet résolu
    15 mai 2011 à 1:19:53

    Bonjour,

    J'ai une question à priori assez simple :

    J'ai une classe et j'ai déclarer une variable : none en tant que membre de la classe voici mon exemple :

    class Requete:
        
        curs = None
    
        def __init__(self, con):
            self.curs = con.cursor()
    


    En faite j'utilise la biblio pySql et bien sur si je viens vers c'est que mon code fonctionne pas du moins quand je souhaite déclarer un membre d'une classe en None pour ce cas si ça fonctionne pas et j'avou que je comprend pas (le reste de mon code à peu d'importance vu que si je déclare ce cursor dans une fonction il fonctionne correctement et fait ce que je lui demande mais dès que je veux le mettre en membre de ma classe je sais pas commentle déclarer correctement pour que ça fonctionne ???????

    Voici le message d'erreur :

    AttributeError: 'NoneType' object has no attribute 'cursor'

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2011 à 1:47:17

      c'est le "con" qui pose problème ... apparement il vaut none.
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        15 mai 2011 à 9:52:49

        Histoire de lever un doute :

        Citation : dseed

        J'ai une classe et j'ai déclaré une variable : none en tant que membre de la classe voici mon exemple :

        class Requete:
            
            curs = None
        
            def __init__(self, con):
                self.curs = con.cursor()
        




        Es-tu bien conscient que les deux curs surlignés sont deux variables distinctes ? Et que Requete.curs n'est lié à aucune instance (si tu as fais du Java C++ et assimilé, ce serait l'équivalent d'un membre statique).
        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2011 à 11:11:40

          Ok j'ai compris merci il faut déclarer les membre dans le init précédé du mot self c'est ça ?

          si on le précède pas du mot self c'est une variable de la fonction c'est ça ?

          Dans un exemple sur le net il créé des membre dans le init mais en plus il crée un fonction getter de c'est membre mais vu quels sont pas privé (syntaxe __var__) je vois pas l'interet à moins qu'il y a qql chose que j'ai pas compris ?

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            15 mai 2011 à 11:23:53

            self --> c'est la référence à l'objet, attention c'est une simple convention, mais il est conseillé pour une bonne lecture de le mettre tel quel, c'est un peu le 'this' du C++, si tu en as fais.

            self.tafonction() --> la fonction ou méthode de l'objet

            self.curs --> attribut de l'objet

            curs = None --> Variable curs
            • Partager sur Facebook
            • Partager sur Twitter
              15 mai 2011 à 11:26:33

              Oui donc on est bien d'accord en python lorsqu'on déclare une variable précédé du mot self dans le init ça devient une var membre de la classe ?
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                15 mai 2011 à 11:30:12

                Qu'est-ce qu'une classe pour toi?
                • Partager sur Facebook
                • Partager sur Twitter
                  15 mai 2011 à 11:33:16

                  C'est ça :

                  class ConnexionMySql:
                      
                       
                      def __init__(self):
                          self.con = None
                  


                  La pour le coup con est un membre de ma classe ConnexionMySql

                  Et c'est bien ici qui faut la déclarer ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    15 mai 2011 à 11:34:17

                    Non le principe, pourquoi utilises-tu une classe? qu'est-ce qu'une classe concrètement pour toi?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 mai 2011 à 11:35:31

                      C'est un object euhh je c pas trop comment la définir

                      En faite c t surtout la syntaxe en python je débute en python et je savais pas comment la définir pourquoi me demande tu ça j'ai dit une connerie ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        15 mai 2011 à 11:42:24

                        Citation

                        C'est un object euhh je c pas trop comment la définir



                        Non, on pourrait assimiler une classe comme un plan pour créer un objet.

                        Grâce à ce plan tu peux créer plusieurs objets identiques.

                        Je sais pas si tu vois un peu plus l'intérêt de la POO...

                        Exemple : Tu crées une classe Personnage --> Plan du personnage

                        Attributs du personnage:

                        - Nom
                        - Puissance
                        - Points de vie
                        - ...

                        Fonction ou méthode (décrit les actions du personnage)

                        - Attaquer
                        - Défendre
                        - Manger
                        - ...

                        Edit : On pourra donc créer des personnages avec des attributs différents ayant les même actions, attention on peut faire bien plus...

                        Je sais pas si je t'aiguille un peu, mais la POO n'est pas toujours la bonne solution.

                        En outre il permet aussi d'organiser ton code proprement, et d'avoir un code que tu peux maintenir à souhait en faisant toutes les modifications possibles.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 mai 2011 à 11:45:12

                          Oui fred ça j'avais compris j'arrivais pas trop à m'exprimer mais dans le gros j'avais pigé.

                          Je souhaite séparé un max mais traitement alors je créer des classes et elles sont appelé par une seul de mes classes une sorte de modèle controleur (j'ai pas encore la vue ...)

                          Merci pour ton aide à toi et aux autres
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Déclarer var en None

                          × 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