web-dev-qa-db-fra.com

Pourquoi "self" a-t-il été choisi sur "this" pour le nom du premier paramètre des méthodes python?

Quelle était la justification du choix du nom self au lieu de this lors de la définition des méthodes de classe en Python?

Oui, bien sûr, vous pouvez le nommer comme vous voulez - mais le nom largement accepté pour le premier paramètre est très clairement self.

Je demande parce qu'il y avait un article à propos de Robert Dewar expliquant pourquoi : A été ajouté à la fin des lignes d'instruction de bloc (par exemple if foo:, def foo(): ), où sa femme, Karin, l'a regardé passivement et a mentionné qu'il n'était pas aussi lisible sans lui. Je me suis donc demandé s'il y aurait une explication similaire pour Guido ou la communauté Python pour choisir self plutôt que this.

L'utilisation de self peut être retracée jusqu'à Smalltalk , qui est l'une des langues les plus anciennes OO ( la plus ancienne selon = python wiki ) et a influencé les concepteurs de langage python:

  • Il existe des preuves d'une influence directe de Guido Van Rossum , car il a été inspiré pour le premier Python bytecode par le Smalltalk bytecode (voir référence 9 à la page 26 de - cet article ):

  • Il existe également des preuves d'une influence indirecte dans le documentation python qui fait référence à une origine Modula-3 de l'explicite self, Modula-3 étant influencé par Smalltalk pour son objet un modèle d'héritage, sans parler de Niklaus Wirth , le père spirituel de Modula qui a passé 2 ans au Xerox Parc où Smalltalk a été inventé.

Smalltalk a utilisé self au lieu de this. Il a également utilisé super. Dans cette langue, Kay a probablement opté pour self à cause de son paradigme de passage de message: il reflète mieux la sémantique pour envoyer un message à self plutôt que d'envoyer un message à this.

La tradition C++ de this, qui Java hérité, doit être retracée au langage Simula , qui utilisait un THIS référence (voir le livre " La conception et l'évolution de C++ " par Bjarne Stroustrup , page 36). Fait intéressant, Stroustrup explique qu'il devait également choisir entre this et self et il a décidé d'opter pour la terminologie Simula plutôt que celle de Smalltalk.

18
Christophe