JET School

Slots nədir?

__slots__ — Python-da obyektlərin yaddaş istifadəsini optimallaşdırmaq üçün istifadə olunan xüsusi bir mexanizmdir. Adətən, Python siniflərinin instansiyaları __dict__ adlı daxili bir strukturdan istifadə edərək atributları saxlayır. Bu isə elastiklik təmin etsə də, çox sayda obyekt yaratdıqda xeyli yaddaş itkisinə səbəb ola bilər.

__slots__ vasitəsilə sinifinizin hansı atributlara sahib ola biləcəyini dəqiq müəyyən edirsiniz və bu halda Python həmin atributları __dict__ olmadan, sabit yaddaş strukturları ilə saxlayır.

Nə üçün __slots__ istifadə olunur?

  • Yaddaşa qənaət etmək üçün
  • Sinif atributlarının statikləşdirilməsi
  • Sürəti artırmaq (çoxlu instansiyalarla işləyərkən)

Sadə nümunə:


class Adam:

__slots__ = ['ad', 'yas']


def __init__(self, ad, yas):

self.ad = ad

self.yas = yas


a = Adam("Murad", 25)

print(a.ad)

Bu sinifdə ad və yas atributlarından başqa heç nə saxlamaq mümkün deyil. Məsələn, a.soyad = "Əliyev" yazmaq səhv verəcək.


Diqqət yetirin:

  • __slots__ istifadə olunanda __dict__ yaradılmır.
  • Yeni atributlar dinamik olaraq əlavə edilə bilməz.
  • İnheritance (irs alma) hallarında diqqətli olmaq lazımdır — __slots__ alt siniflərdə düzgün işləməyə bilər, əgər əlavə atributlar istifadə olunursa.

Nə vaxt istifadə etməli?

  • Eyni sinifdən minlərlə obyekt yaradacağınız halda.
  • Performansa və yaddaşa önəm verdiyiniz layihələrdə (məsələn, oyun motorları, sensor məlumatları ilə işləyən sistemlər və s.)

Teqlər:

Əlaqəli terminlər:

IT sahəsini dərindən öyrənmək üçün kurslarımıza qoşulun. Ətraflı məlumat almaq üçün sorğu göndərin!