Jaki jest cel tego self
słowa w Pythonie? Rozumiem, że odnosi się do konkretnego obiektu utworzonego z tej klasy, ale nie rozumiem, dlaczego musi być jawnie dodawany do każdej funkcji jako parametr. Aby to zilustrować, w Ruby mogę to zrobić:
class myClass
def myFunc(name)
@name = name
end
end
Rozumiem to dość łatwo. Jednak w Pythonie muszę dołączyć self
:
class myClass:
def myFunc(self, name):
self.name = name
Czy ktoś może mi to powiedzieć? To nie jest coś, z czym się spotkałem (co prawda ograniczone) doświadczenie.
@name
bardziej intuicyjny niż self.name
? Ten ostatni, IMO, jest bardziej intuicyjny.
@foo
i self.foo
są równie jednoznaczne, ponieważ nie musi zachodzić niejawne rozwiązanie problemu (np. w C ++ dostęp do elementów instancji można uzyskać „niejawnie” bez „jawnego” korzystania z przestrzeni nazw). Jedyną różnicą jest to, że Ruby wprowadza nowy semantyczny (@), podczas gdy Python nie. To, czy nowy semantyczny był wart tyle, ile uniknięto gadatliwości, jest czysto subiektywne. Chociaż należy zauważyć, że większość współczesnych języków decyduje się na wprowadzenie tutaj koncepcji (np. Php's $ this, JS's this).