self
Python'daki kelimenin amacı nedir ? Bu sınıftan oluşturulan belirli bir nesneyi ifade ettiğini anlıyorum, ancak neden açıkça her işleve parametre olarak eklenmesi gerektiğini göremiyorum. Örneklemek gerekirse, Ruby'de bunu yapabilirim:
class myClass
def myFunc(name)
@name = name
end
end
Anladığım kadarıyla, oldukça kolay. Ancak Python dahil etmek gerekir self
:
class myClass:
def myFunc(self, name):
self.name = name
Biri benimle bu konuda konuşabilir mi? (Kuşkusuz sınırlı) deneyimime rastladığım bir şey değil.
@name
daha sezgisel yapan nedir self.name
? İkincisi, IMO, daha sezgiseldir.
@foo
ve örtük bir çözüme ihtiyaç duyulmadığı self.foo
için eşit derecede açıktır (örn. C ++ 'da, örnek üyelere ad alanları kullanılarak "açıkça" olmadan "örtük" olarak erişilebilir). Tek fark, Ruby'nin yeni bir semantik (@) tanıtması, Python'un sunmamasıdır. Yeni bir semantiğin kaçınılması gereken ayrıntı düzeyine değip değmeyeceği tamamen özneldir. Yine de, çoğu modern dilin burada bir konsept sunmayı seçtiğine dikkat edilmelidir (örn. Php's $ this, JS's).