Какова цель self
слова в Python? Я понимаю, что это относится к конкретному объекту, созданному из этого класса, но я не понимаю, почему его необходимо явно добавлять в каждую функцию в качестве параметра. Для иллюстрации, в Ruby я могу сделать это:
class myClass
def myFunc(name)
@name = name
end
end
Что я понимаю, довольно легко. Однако в Python мне нужно включить self
:
class myClass:
def myFunc(self, name):
self.name = name
Кто-нибудь может рассказать мне об этом? Это не то, с чем я столкнулся в своем (по общему признанию ограниченном) опыте.
@name
более интуитивным, чем self.name
? Последний, IMO, более интуитивно понятен.
@foo
и self.foo
в равной степени явные, поскольку не требуется никакого неявного разрешения (например, в C ++ к членам экземпляра можно «неявно» обращаться без «явного» использования пространств имен). Единственное отличие состоит в том, что Ruby вводит новую семантику (@), а Python - нет. Стоит ли новая семантика того количества, которого избегают многословия, чисто субъективно. Тем не менее, следует отметить, что большинство современных языков предпочитают вводить понятие здесь (например, php's $ this, JS's this).