Quel est le but du self
mot en Python? Je comprends qu'il fait référence à l'objet spécifique créé à partir de cette classe, mais je ne vois pas pourquoi il doit explicitement être ajouté à chaque fonction en tant que paramètre. Pour illustrer, dans Ruby je peux faire ceci:
class myClass
def myFunc(name)
@name = name
end
end
Ce que je comprends assez facilement. Cependant en Python, je dois inclure self
:
class myClass:
def myFunc(self, name):
self.name = name
Quelqu'un peut-il me parler de cela? Ce n'est pas quelque chose que j'ai rencontré dans mon expérience (certes limitée).
@name
plus intuitif que self.name
? Ce dernier, l'OMI, est plus intuitif.
@foo
et self.foo
sont également explicites car aucune résolution implicite ne doit se produire (par exemple en C ++, les membres d'instance peuvent être "implicitement" accédés sans "explicitement" utiliser des espaces de noms). La seule différence est que Ruby introduit une nouvelle sémantique (@), contrairement à Python. Le fait qu'une nouvelle sémantique valait ou non la quantité de verbosité évitée est purement subjectif. Cependant, il convient de noter que la plupart des langages modernes choisissent d'introduire un concept ici (par exemple php's $ this, JS's this).