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 instance de class


Sujet :

Python

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut Python et instance de class
    Bonjour,
    Il y a un truc qui me depasse en Python!! Lorsque je cree 2 objets differents, les données de l'un interfere avec celui de l'autre comme si ils ne faisaient qu'un seul et meme objet !!!

    pour montrer de quoi je parle, j'ai ecrit le code suivant:

    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
    19
    20
    21
    22
    23
    24
     
    class Essai(object):
     
        name = ""
        myTests = [] # list of defined criteria 
     
        def addATest(self, t):
            self.myTests.append(t)
     
        def printEssai (self):
            for i in range(len(self.myTests)):
                print self.myTests[i]
     
     
    if __name__ == '__main__':
       essai1 = Essai()
       essai1.addATest(3)
       essai1.addATest(4)
       essai1.printEssai()
     
       essai2 = Essai()
       essai2.addATest(6)
     
       essai1.printEssai()
    quelqu'un peut m'expliquer ??

    merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Les variables que tu as définies sont statiques, elles sont liées à la classe elle-même, pas à l'instance.
    Si tu veux les lier à l'instance il faut que tu les définisses à travers une méthode (en général __init__, le constructeur) en utilisant self.truc = machin

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut
    ok ca marche
    dans la meme idee de static, est-il possible d'ecrire des fonction static en Pyhton ?

    afin de pouvoir appeler des fonctions sans avoir a contruire d'objets, genre :
    MaClasse.fonctionStatic()

    merci de ton aide

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Python 2.5: rajoute simplement @staticmethod sur la ligne qui précède le def
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Essai:
        @staticmethod
        def maFonction():
            pass

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par oiffrig Voir le message
    Python 2.5: rajoute simplement @staticmethod sur la ligne qui précède le def
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Essai:
        @staticmethod
        def maFonction():
            pass
    Il est possible d'utiliser les décorateurs depuis Python 2.4 déjà.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut
    Comme je trouve toutes mes reponses dans ce poste ... je vais continuer
    Est ce que la surcharge est authorise en Python ?

    genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Test(object):
      def printTest(self):
        ..... 
     
      def printTest(self, value):
        ...
    parce que a chaque fois que je surcharge ... well si j'appelle les 2 fonctions, 1 n'est pas reconnue et le compilo dit qu'il manque des parametres!!

    merci

  7. #7
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Je voudrais ajouter que la surchage d'une fonction est en fait une résolution statique (c'est à dire à la compilation) de la fonction suivant les types des paramètres. En plus de ce que propose le tutoriel, on peut faire à la main dans la plupart des cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def printTest(self):
        ...
    def printTestValue(self, value):
        ...
    puisqu'on sait au moment de l'appel si on met un paramètre ou pas...

  9. #9
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par suckthewindow Voir le message
    Comme je trouve toutes mes reponses dans ce poste ... je vais continuer
    Est ce que la surcharge est authorise en Python ?

    genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Test(object):
      def printTest(self):
        ..... 
     
      def printTest(self, value):
        ...
    parce que a chaque fois que je surcharge ... well si j'appelle les 2 fonctions, 1 n'est pas reconnue et le compilo dit qu'il manque des parametres!!

    merci
    Non, mais tu peux écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Test(object):
        def printTest(self, value=None):
            if value is None:
                #methode sans argument
            else:
                #methode avec value specifie
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  10. #10
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut
    merci pour tout!!

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

Discussions similaires

  1. Suite Thread Simultanés: instances de classe differentes?
    Par macgile dans le forum Framework .NET
    Réponses: 3
    Dernier message: 04/01/2006, 09h50
  2. Exporter une instance de classe au format XML ou XMI
    Par Scorpion Rouge dans le forum Persistance des données
    Réponses: 2
    Dernier message: 22/12/2005, 11h19
  3. Réponses: 2
    Dernier message: 09/10/2005, 15h35
  4. Instance de classes
    Par KymZen dans le forum Tkinter
    Réponses: 9
    Dernier message: 07/04/2005, 08h35
  5. Conditions de destruction des instances de classes
    Par elvivo dans le forum Général Python
    Réponses: 4
    Dernier message: 29/12/2004, 17h16

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