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 :

Question sur les classes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut Question sur les classes
    Bonjour,

    J'apprend les classes, je commence à comprendre, j'ai ce code pour l'exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Cases:
        def __init__(self):
            self.nom = "A1"
            self.x=1
            self.y=1
            self.type = "Plaine"
            self.bonus = "Blé"
     
    a = Cases()
    print(a.nom)
    print(a.bonus)
    print(a.type)
    Ma question est comment rajouter d'autres caases (A2, A3, B1, B...), est ce que je doit rajouter une classe par case ou y a t-il un moyen de créer mes cases d'une autre façon en ne gardant qu'une seule classe (class Cases) ?

  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 Ragus1970 Voir le message
    Ma question est comment rajouter d'autres caases (A2, A3, B1, B...), est ce que je doit rajouter une classe par case ou y a t-il un moyen de créer mes cases d'une autre façon en ne gardant qu'une seule classe (class Cases) ?
    Il faut ouvrir un tuto. parce qu'une technique s'accompagne d'un vocabulaire (classe, attributs, instances, méthodes,...) qui vous permettra de penser avec les concepts qui leurs sont associés (et accessoirement mieux traduire ce que vous voulez réaliser dans un forum).
    Créer plusieurs instances de Cases est bien plus précis que dire "comment rajouter d'autres caases (A2, A3, B1, B...)". Mais c'est trop précis pour être certain que ce soit ce que vous voulez.

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

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Bonjour

    Attention à ne pas confondre instanciation et définition

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Class Cases:
        def __init__(self):
            self.nom = "A1"
            self.x=1
            self.y=1
            self.type = "Plaine"
            self.bonus = "Blé"

    Ici il s'agit de la définition de la classe
    C'est en quelque sorte un moule/modèle ... qui va être commun à tous les objets qu tu créeras en utilisant cette classe

    Ici tu créé un objet (on dit aussi une instance) de type Cases

    pour créé un autre objet de type Cases, il suffit de refaire la même chose

    Problème:
    tous les attributs(nom, x, y , type, bonus) de ta classe ont des valeurs prédéfinis
    donc a.nom et b.nom auront la même valeur

    Si tu souhaites pouvoir les faire varier, il y a 2 solutions :
    1) les modifier après instanciation
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a = Cases()
    a.nom  = "A2"

    2) Pouvoir définir ces valeurs à la création de l'objet
    Auquel cas, il faut changer un peu ta classe et mettre des paramètres au constructeur
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Class Cases:
        def __init__(self, nom):
            self.nom = nom
            self.x=1
            self.y=1
            self.type = "Plaine"
            self.bonus = "Blé"
     
    a = Cases("A1")
    b = Cases("A2")

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut
    Bonjour,

    Merci pour vos réponses, comme vous l'avez deviné, je débute !

    Si j'ai bien compris, il vaut mieux que je fasse ceci :
    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
    class Cases:
        def __init__(self, nom,x,y,type,bonus):
            self.nom = nom
            self.x=x
            self.y=y
            self.type = type
            self.bonus = bonus
     
    A1 = Cases("A1",1,1,"Plaine","Blé")
    A2 = Cases("A2",1,2,"Forêt", "Gibier")
     
    print(A1.nom)
    print(A1.bonus)
    print(A1.type)
    print("")
    print(A2.nom)
    print(A2.bonus)
    print(A2.type)
    Ce qui renvoi :
    A1
    Blé
    Plaine

    A2
    Gibier
    Forêt

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Il n'y a pas de meilleurs façon de faire. Ça dépend du besoin

    En général, on implémente également les getter/setter pour lire/modifier les valeurs des attributs (et se forcer à respecter le principe d'encapsulation)

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut
    Merci a tous, je comprend mieux les classes

  7. #7
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut
    Désolé, j'ai une autre question :

    supposons une variable : varA elle sera soit à 1,2 ou 3

    suivant le même schéma que précédement si je tape :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print(A1.type)
    print(A2.type)
    print(A3.type)
    cela fonctionne mais je voudrais faire quelque chose comme cela :
    Ca ne fonctionne pas bien sûr, comment faire pour pouvoir choisir le type aléatoirement via varA selon sa valeur (1,2 ou 3)

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

Discussions similaires

  1. question sur les classes "static"
    Par Asmod_D dans le forum C++
    Réponses: 4
    Dernier message: 05/04/2009, 17h27
  2. Questions sur les classes.
    Par Lartiste007 dans le forum Débuter
    Réponses: 4
    Dernier message: 05/04/2009, 14h46
  3. Questions sur les classes.
    Par DarkSeiryu dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/02/2009, 09h21
  4. Un question sur les classes
    Par willycat dans le forum C++
    Réponses: 10
    Dernier message: 22/08/2008, 17h55
  5. Questions sur les classes en C#
    Par greg2 dans le forum C#
    Réponses: 11
    Dernier message: 05/11/2007, 19h57

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