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 :

Définir les variables d'une classe


Sujet :

Python

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 194
    Points : 102
    Points
    102
    Par défaut Définir les variables d'une classe
    Bonjour,

    je débute tout juste avec Python et, je dois bien l'avouer, ce langage me plait bien ; j'ai une petite question concernant les classes :

    est il possible :
    - de définir dans une zone bien particulière TOUTES les variables de la classe (un peu comme pour java) ; ainsi, je n'ai pas à parcourir la classe pour retrouver la liste des variables
    - d'empêcher la création de variables non définies ci dessus

    En effet, si j'ai bien compris, il suffit de faire monInstance.toto =3 pour que la variable toto soit créée dans la classe, non ?
    Je ne trouve pas ça optimal :-S

    Merci de votre aide

  2. #2
    Membre averti
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Points : 342
    Points
    342
    Par défaut
    Tes variables de classes (ou attributs) sont précédées du mot clé self.
    La façon la plus propre de les déclarer, c'est dans la méthode __init__ de ta classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Doublement:
        def __init__(self, valeur = 0):
            self.valeur = valeur
     
        def GetValue(self):
            return self.valeur * 2
     
        def Modifie(self, valeur):
            self.valeur = valeur
    C'est vrai que Python est permissif en matière d'affectations aux variables, mais c'est pour ça qu'il faut construire tes classes de manière à fournir tous les outils de modification des attributs sous forme de méthodes spécifiques, et bien les documenter.

    Dans l'exemple simpliste ci-dessus, je déclare l'attribut valeur dans la méthode __init__(), et comme je donne la possibilité de le modifier une fois l'objet créé, je déclare une méthode de classe Modifie() destinée à ça.

    Dernière chose. Quand tu crées une variable liée à une instance (monInstance.toto = 3), tu ne crées par une variable de classe, mais un vague machin uniquement lié à cette instance. Ca ne sert à rien, et ce n'est pas recommandé...

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    Ok, je vois le principe :-)

    Merci beaucoup :-)

  4. #4
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    c'est quand même moins robuste que du Java de ce côté là (je suis aussi débutant en python et adepte de Java )

  5. #5
    Membre averti
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par pollux007
    c'est quand même moins robuste que du Java de ce côté là (je suis aussi débutant en python et adepte de Java )
    C'est différent, mais tout aussi robuste...

    Si tu crées une classe par toi-même, tu sais forcément comment l'utiliser.
    Si tu utilises des classes toutes faites, tu en étudies la documentation avant de l'implémenter dans ton programme.

    De toutes façons, en Python comme en Java, une mauvaise utilisation est toujours punie par un message d'erreur.

    L'approche sécuritaire n'est pas indispensable en Python, l'intégrité de la mémoire n'étant jamais menacée...

  6. #6
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Citation Envoyé par Alain_72
    L'approche sécuritaire n'est pas indispensable en Python, l'intégrité de la mémoire n'étant jamais menacée...
    C'est vrai.... Jpense ptetre trop "Java" en étudiant python...

  7. #7
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    on a le même souci, pollux ;-)

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

Discussions similaires

  1. afficher toutes les méthodes et les variables d'une classe
    Par riyad25h dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 07/07/2010, 10h22
  2. Réponses: 5
    Dernier message: 28/09/2007, 14h58
  3. [VB6]Enumérer les attributs et les méthodes d'une classe
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 04/05/2004, 18h34
  4. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53
  5. Variable d'une Classe Ancêtre
    Par Génie dans le forum Langage
    Réponses: 3
    Dernier message: 18/09/2002, 19h24

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