Gölgeleme: Değişkenlerin Maskelenmesi
Bu özellik, genellikle istemediğimiz davranışlara yol açabilir. Peki ama neden? Çünkü sınıf içinde tanımladığınız bir değişken, dışarıdaki değişkeni yanlışlıkla geçersiz kılabilir ve bu, hatalarla dolu bir koda yol açabilir.
Örnek Kod:
class Kedi:
def __init__(self, isim):
self.isim = isim
def isim_degistir(self, isim):
self.isim = isim # Burada dışarıdaki 'isim' değişkenini 'self.isim' ile gölgeliyoruz
kedi = Kedi("Maviş")
kedi.isim_degistir("Minik") # Kedi'nin ismi değişiyor
print(kedi.isim) # "Minik" yazdırılır
Burada görebileceğiniz gibi, `self.isim` ile dışarıdaki `isim` değişkenini gölgeliyoruz. Ancak bu durum, programınızın anlaşılabilirliğini zorlaştırabilir. Çünkü birisi dışarıdaki değişkenin ne olduğunu anlamakta güçlük çekebilir.
Kapsülleme: Veri Gizleme
Örnek Kod:
class Araba:
def __init__(self, marka, model):
self.marka = marka
self._model = model # Özel veri: Dışarıdan erişim engellenmiş
def araba_bilgisi(self):
return f"{self.marka} {self._model}"
araba = Araba("BMW", "X5")
print(araba.araba_bilgisi()) # "BMW X5" yazdırılır
print(araba._model) # Bu, pek önerilmez; yine de erişilebilir
Gördüğünüz gibi, `_model` değişkeni dışarıdan doğrudan erişilemez gibi gözükse de, Python'un dinamik yapısı sayesinde hâlâ erişilebiliyor. Ancak, isimdeki `_` sembolü bu değişkenin özel olduğunu gösterir ve başka geliştiricilere bu veriye doğrudan erişmenin iyi bir alışkanlık olmadığını belirtir.
Gölgeleme ve Kapsülleme İle İlgili Yaygın Hatalar
2. Veri Erişim Problemleri: Kapsülleme uygularken, bazı geliştiriciler veriye yanlışlıkla ya da isteyerek doğrudan erişmeye çalışabilirler. Ancak, bu veriye yalnızca sınıf metodları aracılığıyla ulaşılmalıdır. Bu tarz hatalar, genellikle kodun bakımını zorlaştırır.
3. Gölgeleme ve Kapsülleme Karışıklığı: Bu iki kavram birbiriyle karışabilir. Kapsülleme için kullanılan _veya __ ile başlayan isimler bazen yanlışlıkla gölgeleme olarak yorumlanabilir. Bu da kafa karışıklığına yol açar.
Hataları Önlemek İçin İpuçları
- Veri Erişimini Kısıtlayın: Kapsülleme kullanırken, yalnızca gerekli verileri dışarıya açın. Gereksiz erişimlere izin vermek, veri güvenliği açısından sorun yaratabilir.
- Dikkatli Testler Yapın: Hem gölgeleme hem de kapsülleme kullanırken, programın doğru şekilde çalıştığından emin olmak için sık sık test yapın.