'Açıkça örtük olmaktan iyidir' ise, neden Python: Açık, Korumalı, Özel vb. Açık erişim değiştiricileri yok?
Bu fikrin, programcının bir ipucu ile ne yapacağını bilmesi gerektiği olduğunu biliyorum - 'kaba kuvvet' kullanmaya gerek yok. Ancak IMO 'Kapsülleme' veya 'bilgiyi gizleme' sadece insanları dışarıda tutmakla kalmaz, aynı zamanda bir organizasyon ve yapı meselesidir: gelişim katmanlarınız, tıpkı fiziksel sistemler gibi, kendini tanımlayan, açıkça sınırlandırılmış kapsam ve sınırlara sahip olmalıdır.
Birisi lütfen bana, aksi halde mükemmel görünebilecek bir dil olan Python'da açıkça değil, erişim kısıtlamalarının neden belirtildiği konusunda sağlam bir açıklama yaparak yardımcı olabilir mi?
Düzenleme: Şimdiye kadar 3 önerilen cevap gördüm ve sorumun 2 kısmı olduğunu anladım:
Örneğin, neden anahtar kelimeler yok?
private def myFunc(): dostuff....
IMO yerine çirkin ve alt çizgi yazmak zor. Ancak bu önemli nokta değil.
Daha önemlisi:
Bu erişim düzenleyicileri neden sadece 'öneri' ya da ipucu veriyor ve zorunlu değil. Daha sonra değiştirmek zor olacak mı? Korumalı olanı 'halka açık' olarak değiştirmek çok kolaydır - ve bunu zorlaştıran karmaşık bir kalıtım zincirine sahipseniz, zayıf bir tasarıma sahip olursunuz - tasarımınızı yazmayı kolaylaştıran bir dil özelliğine güvenmek yerine rafine edilmelidir kötü yapılandırılmış kod.
Erişim düzenleyicileri zorlandığında, kodunuz otomatik olarak bölümlendirilir - belirli segmentlerin kapsam dışı olduğunu ve böylece gerekip gerekmediği zaman haricinde bunlarla uğraşmanıza gerek kalmayacağını BİLİNEBİLİRSİNİZ. Ve, tasarımınız iyi değilse ve kendinizi sürekli olarak farklı alanlara giren ve çıkan şeyleri bulursanız, dil, hareketlerinizi temizlemenize yardımcı olabilir.
Python'u sevdiğim kadar, bu noktayı ciddi bir eksiklik olarak görüyorum. Ve bunun için iyi bir cevap görmedim.
private def whatever
şu ki, bunun class x: def whatever(self): pass
için bir kısayol class x: pass; x.whatever = lambda self: pass
, temelde, atamak için özel bir değiştiriciye ihtiyacınız olacak