Self en python
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Self en python



  1. #1
    Leond95

    Self en python


    ------

    Bonjour a tous,

    S'ils vous plaît est ce que qq un peut m'expliquer l'utilité du mot clé self en python.

    Cordialement

    -----

  2. #2
    pm42

    Re : Self en python

    La même que this dans les autres langages objets : cela référence l'objet courant et permet de le passer à un autre.
    Sauf qu'en python, ce n'est pas implicite et qu'il sert aussi à invoquer une autre méthode sur soi même.

    Ceci dit, c'est difficile de te donner des détails sans savoir ce que tu connais en programmation objet.

  3. #3
    Leond95

    Re : Self en python

    Je suis débutant en python, je viens just de commencer la poo avec python

  4. #4
    pm42

    Re : Self en python

    Citation Envoyé par Leond95 Voir le message
    Je suis débutant en python, je viens just de commencer la poo avec python
    Comme je disais, python complique un peu la compréhension.
    Maintenant, imagines que tu as construit un objet Toto. Maintenant, tu veux depuis une méthode de Toto construire un objet Tata qui prend comme argument ton Toto, celui que tu viens juste de construire.
    Tu vas écrire :
    Code:
    t = Tata(self)
    Pour dire à Tata : prends moi.

  5. A voir en vidéo sur Futura
  6. #5
    Leond95

    Re : Self en python

    Ok j'ai compris merci beaucoup

  7. #6
    polo974

    Re : Self en python

    Petite précision, self n'est pas un mot clé, c'est une variable passée (référence de l’instanciation courante) en premier paramètre des fonctions de la classe.
    Et par convention, on la nomme self.

    On peut donc changer de nom, par exemple pour un truc perso, ou self.*** me gavait, j'avais fini par raccourcir à s.***, ce qui donne:
    Code:
    class Gcode:
        
    ...
        def __init__(s):
            s.debut = 10
            s.debm1 = 0
            s.kfi = .33    # vitesse voir gotoz
            s.kei = 1.1    # extrude voir gotoz
            s.kb = 1.
            s.x = 0
            s.y = 0
            s.xo = 0
            s.yo = 0
            s.z = 0
            s.e = 0
            s.f = 0
            s.gprint(s.gInit)
            s.esp = 750.
            s.stRetract = 1
            s.cote = 1
            s.sens = 0
            s.dird = 1
    
        def end(s):
            s.gprint(s.gEnd % (s.z+.5))
    
        def retract(s):
            if not s.stRetract:
                s.gprint(s.gRetract % -2.)
                s.e = 0
                s.stRetract = 1
    
        def offset(s, xy):
            s.xo = xy[0]
            s.yo = xy[1]
    ...
    je ne dis pas que c'est mieux, mais c'est faisable quand on se comprend...
    Jusqu'ici tout va bien...

  8. #7
    pm42

    Re : Self en python

    Citation Envoyé par polo974 Voir le message
    je ne dis pas que c'est mieux
    Sauf si on programme pour soi tout seul dans son coin et qu'on est sur que personne d'autre ne va jamais lire son programme, c'est à éviter absolument.
    Même si effectivement, l'omniprésence de self en Python alors que c'est massivement implicite dans les autres langages est très lourde.

  9. #8
    polo974

    Re : Self en python

    bah, je ne serais pas aussi radical, car c'est autorisé et ça reste lisible.

    et puis, c'est moins grave que de mélanger les espaces et les tabulations... (en python2 quasi obsolete)
    Là, c'est diabolique ! ! !

    sinon, un truc drôle (en python2 toujours):

    Code:
    >>> True
    True
    >>> False
    False
    >>> 
    >>> True = not True
    >>> False = not False
    >>> 
    >>> True
    False
    >>> False
    True
    >>> 
    >>> True = not True
    >>> False = not False
    >>> 
    >>> True
    True
    >>> False
    False
    >>>
    python3 est moins drôle de ce coté...
    Jusqu'ici tout va bien...

Discussions similaires

  1. [Python] Problème de lag de programme et essai de Timer python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 20
    Dernier message: 26/01/2018, 15h14
  2. [Python] subprocess, lancer un autre programme avec python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 30/11/2016, 18h56
  3. en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?
    Par docEmmettBrown dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 10/06/2015, 15h47
  4. Boa ? Python ?
    Par Nicolas12 dans le forum Identification des espèces animales ou végétales
    Réponses: 5
    Dernier message: 19/11/2011, 17h00
  5. Python
    Par invite3e3c726d dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 13/03/2009, 11h55