Python __slots__

PYTHON SLOTS

__slots__

__slots__ , programın içinde dinamik olarak üretilmesini istemediğimiz objeleri bu çatı altına yerleştiririz.
Ayrıca özelliklere daha hızlı erişirler.
Nesnelerin(objects) bellekte kapladığı alanı azaltırlar.
Ayrıntılı bilgi için Usage of __slots__ sayfasını ziyaret ediniz.


Örnek Olarak:

class KARE(object):

    __slots__ = ('w','l')
    
    def __init__(self, width, length):
        self.w = width
        self.l = length
    
    def alan(self):
        if self.w == self.l:
            return self.w * self.l
        else:
            return "Kenar uzunlukları aynı değeri almalı"
	    
if __name__ == '__main__':
    temp = KARE(4,4)
    print(temp.alan())  
#Eğer koda deneme ile erişilmek istenirse:
#NOT: sadece ek bilgi olarak eklendi.
t = temp.deneme


Eğer __slots__ kullanmasaydık sonuç aşağıdaki gibi döndürülecekti:
  class KARE(object):

    global w,l
    
    def __init__(self, width, length):
        self.w = width
        self.l = length
    
    def alan(self):
        if self.w == self.l:
            return self.w * self.l
        else:
            return "Kenar uzunlukları aynı değeri almalı"
	    
if __name__ == '__main__':
    temp = KARE(4,4)
    print(temp.alan())  
    
    temp.deneme = 45
    
    print(temp.deneme)

  
Bu kodları Linux ta çalıştırmak için .py uzantılı bir dosya oluşturun. denek.py adlı dosyayı çalıştırılabilir hale getirin. Bunun için chmod 755 denek.py veya chmod +x denek.py kodlarını terminalde çalıştır.



Son olarak ./denek.py veya "Permission denied" hatası ile karşılaşırsanız sudo ./denek.py yazarak çalıştırınız. Ek olarak #!/usr/bin/python kodunu yazdığınız kod sayfasında ilk satıra eklerseniz python kütüphanesini yine kullanabilirsiniz. Linux içinde herhangi bir kodlama diliyle çalışılırken veya scriptle bu yöntem çok sık kullanılır.

Yorumlar

Bu blogdaki popüler yayınlar

Yetki Yükseltme(Priviledge Escalation)

Binary Explotation Note

Shell Kodları Ve Python