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 :

Classe contenant une liste d'objets


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut Classe contenant une liste d'objets
    Bonjour,

    Sur ce bout de code, j'ai une classe qui contient une liste d'objets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class cGame(object) :
        def __init__(self) :
            self.Equipe = []                        # Liste d'objets de type cPlayer.
        def addEquipe(self, argPlayer) :
            self.Equipe.append(cPlayer(argPlayer))  # Ajout d'un objet cPayer à la liste.
        def AfficheEquipe(self) :
            print("Nombre : ", len(self.Equipe)) # Retourne bien le nombre de joueurs.
            for self.i in self.Equipe :             # Parcours la liste d'objets pour affichage.
                print(self.i.Information())         # Pourquoi "none" ???
    class cPlayer(object) :
        def __init__(self, argPlayer) :
            self.Player = argPlayer
        def Information(self) :
            print(self.Player)
    Ensuite, j'instancie ma classe, ras.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dpt = cGame()
    Dpt.addEquipe("toto")
    Dpt.addEquipe("titi")
    Dpt.AfficheEquipe()
    Voici la sortie :
    toto
    None
    titi
    None
    Ma question est la suivante, pourquoi la méthode AfficheEquipe() affiche none ?

    Je suis novice en python, merci pour votre aide.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par gambi Voir le message
    Ma question est la suivante, pourquoi la méthode AfficheEquipe() affiche none ?
    C'est l'exécution des print qui affiche.... et Information retourne None (auquel on applique un print) après avoir affiché self.Player.
    Citation Envoyé par gambi Voir le message
    Je suis novice en python, merci pour votre aide.
    Si vous avez des soucis avec print et le fonctionnement de base des fonctions, il serait peut être plus judicieux d'apprendre ces bases plutôt que de vous lancer dans les "class".
    Votre soucis se résume à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> def f():
    ...     print('toto')
    ...
    >>> print(f())
    toto
    None
    >>>
    Relire son code, c'est retrouver ces constructions de base emmêlées dans un code plus touffu.... et si le sujet de la discussion "Classe contenant une liste d'objets" n'a pas de rapport avec le problème rencontré, c'est bien que pour vous c'est juste un brouillard intense.

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

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par gambi Voir le message
    Ma question est la suivante, pourquoi la méthode AfficheEquipe() affiche none ?
    Parce qu'elle fait un print() d'une méthode "Information()" qui ne retourne rien.

    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def toto():
    	print("coucou")
    Appeler toto() exécute la fonction toto() qui affiche "coucou" => tu as "coucou" à l'écran
    Appeler print(toto()) exécute aussi la fonction toto() qui affiche "coucou" mais affiche aussi le retour de cette fonction (qui ne retourne rien) => tu as "coucou" (affiché par toto()) et aussi None (affiché par le print de ce retour)

    Tu veux écrire une fonction appelable par print() pas de souci à condition que cette fonction retourne un truc affichable. Mais "retourner" un truc ce n'est pas la même chose que "afficher" un truc...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def toto():
    	return "coucou"
    Là un print(toto()) ne pose aucun souci.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    bonjour
    petites notes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    def __init__(self, argPlayer)
    pourquoi compliquer en ajouter le préfixe "arg" ? utiliser "nom", "poste" ou "identifiant" est 100 fois plus clair

    ------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dpt.addEquipe("toto")
    ...
    self.Equipe.append(cPlayer(argPlayer))
    Il est extrêmement rare de créer l'objet dans une méthode de cette façon !
    Puisque nous sommes en objet, on passe en paramètre directement un objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dpt.addJoueur(cPlayer("toto"))
    Dpt.addJoueur(Capitaine("tata"))
    note, je préfère un nom comme "addJoueur" car ta fonction semble ajouter une équipe avec son nom.

    ------------
    Le plus important

    for self.i in self.Equipe :
    Quelle horreur !
    Ce n'est pas parce que l'on code dans une classe que toute variable doit être attribut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for joueur in self.equipe:

  5. #5
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 53
    Par défaut
    Merci pour vos réponses éclairantes.

Discussions similaires

  1. Classe fille contenant une liste d'objets de classe mere?
    Par ThibaudJER dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 31/07/2015, 15h46
  2. Réponses: 3
    Dernier message: 19/07/2010, 08h42
  3. Ajout de Node a partir d'objet contenant une liste d'objet
    Par Al_Bundy dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/08/2008, 14h35
  4. Réponses: 2
    Dernier message: 29/05/2008, 15h59
  5. Créer une liste d'objets statiques dans une classe
    Par crossbowman dans le forum C++
    Réponses: 3
    Dernier message: 13/03/2006, 09h11

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