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 :

Le mot clef : Self


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Points : 39
    Points
    39
    Par défaut Le mot clef : Self
    Bonsoir Tout'l monde,

    Je voulais savoir :
    1. L'importance du constructeur __init__ dans une classe
    2. quelle est la signification du mot clef SELF dans le constructeur et son role.



    Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    __init__() n'est pas le constructeur d'une classe, celui-ci est __new__().

    self désigne l'instance elle même de la classe qui existe aussi dans d'autres langages mais il fut choisit par le créateur de Python que cette instance serait explicite et non implicite comme ailleurs, d'où sa présence à chaque fois que l'instance apparaît.

    Dans la construction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Foo:
        def __init__(self):
            self.baz = "Un attribut"
     
    foo = Foo()
    foo et self désignent la même chose.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par calito Voir le message
    Je voulais savoir :
    1. L'importance du constructeur __init__ dans une classe
    2. quelle est la signification du mot clef SELF dans le constructeur et son role.
    __init__, si elle existe, sera une des méthodes/fonctions appelées(*) lors de l'instanciation d'une classe.
    (*) une classe peut hériter d'autres classes et meta-class.

    "self" n'est pas un mot clé, mais une convention.
    On peut remplacer self par ce qu'on veut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> class B:
    ...    count = 0
    ...    def print(s):
    ...        s.count += 1
    ...        print(s.count)
    ...
    >>> a = B()
    >>> a.print()
    1
    >>> a.print()
    2
    >>>
    mais on s'appliquera à utiliser "self", par convention.

    note: Python étant dynamique, la création d'une instance peut se limiter à la création d'un "dict" qui sera "initialisé" par Python mais qui peut être "rempli" à n'importe quel moment (et dans n'importe quelle "méthode"). Mais çà n'arrange pas la lisibilité et la documentation du code. "Par convention", on s'attache à créer les variables d'instance dans __init__ ou mieux elles sont définies comme attributs de classe avec des valeurs par défaut (et des commentaires). Le code plus lisible. Mais techniquement, il fonctionnera pareil... mais on s'y applique dans l'espoir de s'y retrouver plus facilement au cas où on relira le code plus tard.

    "a.print" est (presque) un sucre syntaxique.
    On pourrait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> B.print(a)
    3
    >>> B.print(a)
    4
    >>>
    et obtenir le même "effet".

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

Discussions similaires

  1. [MySQL] SQL et résultat de recherche par mot clef
    Par carelha dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/04/2006, 15h40
  2. Réponses: 1
    Dernier message: 11/03/2006, 09h55
  3. mot-clef static
    Par keil dans le forum C++
    Réponses: 8
    Dernier message: 25/01/2006, 17h11
  4. mot clef sql pour nom de champ
    Par bobinou007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 13h21

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