Press "Enter" to skip to content

Erişim Belirleyiciler Access Modifiers

Yaşar SAFALI 0

Erişim Belirleyiciler Access Modifiers

Python’da sınıflar içerisinde yer alan değişkenlerin,fonksiyonların bir erişim belirleyicisi vardır.Erişim Belirleyiciler değişkenlerin veya fonksiyonların erişim yetkisini belirler.Public,protected ve private türünde erişim belirleyiciler mecvuttur.Java,C# gibi dilleri bilen programcılar o dillerde değişkenlerin veya fonksiyonların erişimini kısıtlamak veya genişletmek için anahtar kelimeler kullanıldığı bilirler.Python’da bu iş biraz farklıdır.Şimdi bu erişim belirleyicilerin özelliklerini inceleyelim.

  • Public

Public erişim demek bir değişkene veya fonksiyona her yerden(bütün classlardan) erişebilmek demektir.

Python da yer alan tüm değişkenler,fonksiyonlar şu ana kadar yaptığımız tanımlamada her yerden erişime açık değişkenlerdi.Çünkü Python’da public değişken tanımlamak için ilk karakterin _(underscore) olmaması yeterlidir.

class Muhendis:
    
    ad="Yazılım"
    soyad="hanem"
    def EkranaYaz(self):
        print(self.ad)
        print(self.soyad)


muhendis=Muhendis()
print(muhendis.ad)
muhendis.EkranaYaz()

Output:

Yazılım
Yazılım
hanem

Görüldüğü gibi hem değişkenlere hemde fonksiyonlara erişim mümkündür.

  • Private

Private değişkenler veya fonksiyonlar sadece tanımlandıkları class içerisinden erişilebilirler.Başka hiç bir yerden erişim mümkün değildir.Python’da bir yapıyı private yapmak için ilk iki karakter __(underscore) olmalıdır.

class Muhendis:

    ad="Yazılım"
    __soyad="hanem"
    def EkranaYaz(self):
        print(self.ad)
        print(self.__soyad)


muhendis=Muhendis()
print(muhendis.ad)
print(muhendis.__soyad)

Output:

Yazılım
Traceback (most recent call last):
File “C:/Users/yasar/PycharmProjects/python2/yasar2.py”, line 12, in <module>
print(muhendis.soyad)
AttributeError: ‘Muhendis’ object has no attribute ‘__soyad’

Çıktıyi incelediğimizde  bize bu class soyad adlı değişken içermiyor demektedir.Soyad değişkeni private olduğu için erişime kapalıdır.Aynı şekilde EkranaYaz fonksiyonunuda private yapıp inceleyelim.

class Muhendis:

    ad="Yazılım"
    __soyad="hanem"
    def __EkranaYaz(self):
        print(self.ad)
        print(self.__soyad)


muhendis=Muhendis()
print(muhendis.ad)

muhendis.__EkranaYaz()

 

Output:

Yazılım
Traceback (most recent call last):
File “C:/Users/yasar/PycharmProjects/python2/yasar2.py”, line 13, in <module>
muhendis.__EkranaYaz()
AttributeError: ‘Muhendis’ object has no attribute ‘__EkranaYaz’

__EkranaYaz fonksiyonu private bir üye olduğu için sadece sınıf içerisinden erişim mümkündür.

 

class Muhendis:

    ad="Yazılım"
    __soyad="hanem"
    def __EkranaYaz(self):
        print(self.ad)
        print(self.__soyad)


    def __init__(self):
        self.__EkranaYaz()

muhendis=Muhendis()


Output:

Yazılım
hanem

 

  • Protected

Bir yapıyı protected yapmak için ilk karakterin _(underscore) olması gerekir.Protecteda yapılar mevcut sınıf ve alt sınıfdan erişilebilir.

class Muhendis:

    ad="Yazılım"
    soyad="hanem"
    def _EkranaYaz(self):
        print(self.ad)
        print(self.soyad)


   

muhendis=Muhendis()
muhendis._EkranaYaz()

Output:

Yazılım
hanem

Erişim belirleyicileri anlattığımıza göre artık Kapsülleme(Encapsulation) konusuna geçebiliriz.Bir sonraki yazımızda görüşmek dileğiyle

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir