48 votes

Pourquoi les pythonistes appellent-ils la référence actuelle "self" et non "this"?

Python est le langage que je connais le plus et, étrangement, je ne sais toujours pas pourquoi je tape "self" et non "this" comme en Java ou en PHP.

Je sais que Python est plus ancien que Java, mais je ne peux pas comprendre d'où cela vient. Surtout que vous pouvez utiliser n'importe quel nom au lieu de "self": le programme fonctionnera correctement.

Alors d'où vient cette convention?

67voto

Jim Ferrans Points 13673

Smalltalk-80, publié par Xerox dans les années 1980, utilisé self. Objective-C (début des années 1980) des couches de Smalltalk dispose de plus de C, de sorte qu'il utilise self trop. Modula-3 (1988) et Python (fin des années 1980) suivre cette tradition.

C++, également datant du début des années 1980, a choisi this au lieu de self. Depuis Java a été conçu pour être familière aux développeurs C/C++, on utilise this trop.

Smalltalk utilise la métaphore d'objets d'envoyer des messages les uns aux autres, de sorte que "auto" indique simplement que l'objet de l'envoi d'un message à lui-même.

28voto

duffymo Points 188155

Vérifier l' histoire de Python pour les classes définies par l'utilisateur:

Au lieu de cela, tout simplement, on définit une fonction dont le premier argument correspond à l'instance, qui par convention est nommé "soi". Par exemple:

def spam(self,y):
    print self.x, y

Cette approche ressemble à quelque chose que je l'avait vu dans la Modula-3, qui avait déjà m'a fourni avec la syntaxe pour l'importation et la gestion des exceptions.

C'est un choix aussi bonne que les autres. Vous pourriez vous demander pourquoi C++, Java et C# a choisi "ce" tout aussi facilement.

19voto

tragomaskhalos Points 1085

Smalltalk, bien avant Java.

16voto

jterrace Points 21939

À l'égard de python, il n'y a rien de spécial à propos de self. Vous pouvez utiliser this à la place si vous voulais:

Voici un exemple:

>>> class A(object):
...    def __init__(this):
...       this.x = 3
... 
>>> a = A()
>>> a.x
3

Bien que vous pouvez nommer comme vous le souhaitez, self est la convention pour le premier argument d'une fonction de classe. Découvrez le paragraphe 5 de l'article 9.4 de la documentation python, qui dit:

Souvent, le premier argument de la méthode est appelée auto. Ce n'est rien plus que d'une convention: le nom de l'auto n'a absolument rien de spécial sens de Python. Notez, cependant, qu'en ne suivant pas la convention votre code peut être moins lisible pour d'autres programmeurs Python, et il est également concevable qu'une classe programme de navigateur peut-être écrit que s'appuie sur une convention.

Comme pour la convention, il a commencé en Smalltalk, mais est également utilisé dans Object Pascal, Python, Ruby, Objective-C. Cette réponse a une bonne explication.

7voto

cdleary Points 18869

La principale inspiration était Modula-3, à laquelle Guido a été présenté à DEC:

le rapport final Modula-3 y était écrit à peu près au même moment. Ce que j'ai appris à cet endroit est apparu dans la gestion des exceptions de Python, dans ses modules, et dans le fait que les méthodes contiennent explicitement "self" dans leur liste de paramètres.

- Guido, Linux Journal s'entretient avec Guido van Rossum

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X