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.)
IT kurslarımız barədə məlumat almaq üçün formu doldurun
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!