Python Özel Sınıf Metodları

Merhaba arkadaşlar Python sınıf özel metodları arasında

__setattr__
__delattr__
__delattr__

bu metodları gördüm bunların kullanım mantığı C++ programlama dilinde bulunan kapsülleme mantığı ile aynı mı kullanım mantığı nedir yardımcı olursanız sevinirim.

Aslında tam olarak encapsulation gibi değil. C++'daki gibi Private ve Protected metotlar elde etmek için Python’da fonksiyon isminin başına _ ve __ işaretleri getirilir. (Private için _, Protected için __ işareti kullanılır.)

__fonksiyon__ gibi fonksiyon isimleri ise global alanda görünür ve global alanda kullanılabilir.
Bunlara magic metotlar diyorlar. Yani belli bir işlemi yapmak için kullanılan metotlar bunlar.

Örnek:

class X:
    def __init__(self):
        self.x = 1

    def __degistir1__(self, y):
        self.x = y
        print("başarılı.")

    def _degistir2(self, y):
        self.x = y
        print("başarılı.")

    def __degistir3(self, y):
        self.x = y
        print("başarılı.")


test = X()
test.__degistir1__(3)
test._degistir2(3)
test.__degistir3(3)

Bu kodları çalıştırırsanız, ekrana iki defa Başarılı yazısının yazdırıldığını göreceksiniz.

__degistir1__ fonksiyonu global alanda çalıştırılabilir ve global alanda görünür bir haldedir.

_degistir2 fonksiyonu global alanda çalıştırılabilir ama global alanda görünmez bir haldedir.

__degistir3 fonksiyonu ne global alanda çalıştırılabilir ne de global alanda görünür.

3 Beğeni

Çok teşekkürler teşekkür ederim yardımınız için.

Mesela size magic metotlar ile ilgili bir örnek vereyim, ne yaptığını görün.

class X:
    def __init__(self, x):
        self.x = x


test = X("Hello")
print(test)

Bu kodları çalıştırırsanız, alacağınız çıktı şöyle bir şey olur.

<__main__.X object at 0x000000000258C4C0>

Şimdi bir tane magic metod ekliyorum.

class X:
    def __init__(self, x):
        self.x = x

    def __repr__(self):
        return self.x


test = X("Hello")
print(test)

Bu kodları çalıştırırsanız alacağınız çıktı ise şöyle olacaktır.

Hello

Bu sadece magic metotlardan bir tanesi, daha birçok özel işlem yapan magic metot var.

1 Beğeni

Hepsini inceliyorum hemen teşekkürler.

Hepsi burada:

https://docs.python.org/3/reference/datamodel.html#special-method-names

1 Beğeni

Çok teşekkürler inceliyorum hemen.