Kapsülleme, sınıfınız içindeki özellik ve fonksiyonlara diğer sınıflar içinden yetkisiz erişimden korunması işlemidir. Bunun için erişim yetkilerini siz belirlersiniz. Bir sınıftaki özellikleri(değişkenleri) özel(private) olarak belirleyerek dış erişimden koruyabilirsiniz.
Python’da bir özelliği(değişkeni) özel(private) yapmak için başına iki tane alt çizgi ekleriz. Bunu yaptığımızda o sınıftan oluşturulan nesne ile bu özelliğe direkt olarak erişilemez.
Örnek olarak daha önce oluşturduğumuz Personel() sınıfını ele alalım. Bu sınıf içindeki deneyimSuresi özelliğini gizli yapalım ve bir nesne oluşturup bu veriye ulaşmaya çalışalım;
class Personel: def __init__(kisi,ad,soyad, programlamaDili, deneyimSuresi): kisi.ad=ad kisi.soyad=soyad kisi.programlamaDili=programlamaDili kisi.__deneyimSuresi=deneyimSuresi personel1 = Personel("Oben","Seven",("Python","PHP","Javascript"),18) print("Personel Ad-Soyad: " + personel1.ad + " " + personel1.soyad) print("Deneyim Süresi: " , personel1.deneyimSuresi) print("Kullandığı Programlama Dilleri: ") personel1.dilYazdir()
Çıktı:
Personel Ad-Soyad: Oben Seven Traceback (most recent call last): File "main.py", line 11, in <module> print("Deneyim Süresi: " , personel1.deneyimSuresi) AttributeError: 'Personel' object has no attribute 'deneyimSuresi'
Gördüğünüz gibi, deneyimSuresi verisini ekrana yazdırmak istediğimizde Personel() sınıfından oluşturulan nesnenin böyle bir özelliği olmadığı hakkında bir hata alıyoruz.
Bu veriye erişmenin tek yolu, alt çizgi ile birlikte özelliği içeren Sınıfın adını birlikte kullanmaktır;
print("Deneyim Süresi: " , personel1._Personel__deneyimSuresi)
Çıktı:
Deneyim Süresi: 18
Bağlantıda Kalalım