Ce sunt `__slots__` în Python și ce problemă rezolvă
Un tutorial Python care explică ce este slots și ce problemă rezolvă. Acoperă felul în care o instanță normală își stochează atributele într-un dicționar per obiect, cum declararea lui slots face clasa să creeze câte un member_descriptor per nume, care citește un decalaj fix, deci nu se alocă niciun dicționar, și de ce accesul la atribute rămâne la fel de rapid sau mai rapid, în timp ce atributele nedeclarate ridică AttributeError. Exemple rulabile cu ieșire reală compară o clasă simplă și una cu sloturi una lângă alta, măsoară memoria de vârf cu tracemalloc pe 200.000 de instanțe construite din obiecte de încărcătură partajate, ca să izoleze supraîncărcarea per instanță, și demonstrează că o subclasă care își omite propriul slots recapătă tăcut dict și pierde economia. Acoperă și acumularea sloturilor de-a lungul MRO-ului, tuplul gol slots, suportul pentru weakref, conflictele de dispunere la moștenire multiplă și dataclass slots=True.
Comments