Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
@BookPython
В Python объекты хранят свои атрибуты в словарях, доступ к которым можно получить через магический атрибут dict: class A: pass a = A() a.x = 1 a.__dict__ # {'x': 1} При прямом доступе к этому словарю можно даже создать атрибуты, которые не являются допустимыми идентификаторами Python (то есть получить их через стандартный синтаксис obj.attr не получится): a.__dict__[' '] = ' ' getattr(a, ' ') # ' ' Можно также попросить Python хранить атрибуты непосредственно в памяти (как у простых структур C) с помощью slots. Это экономит память и немного ускоряет доступ к атрибутам, так как не происходит поиска в словаре. class Point: __slots__ = ['x', 'y'] Есть несколько моментов, которые нужно помнить при использовании slots. Во-первых, нельзя задавать атрибуты, не указанные в slots. Во-вторых, если класс наследуется от класса с slots, его slots не перекрывают родительские, а добавляются к ним: class Parent: __slots__ = ['x'] class Child(Parent): __slots__ = ['y'] c = Child() c.x = 1 c.y = 2 В-третьих, нельзя наследоваться сразу от двух разных классов с непустыми slots, даже если они совпадают. Помни, что slots предназначены для оптимизации, а не для ограничения набора атрибутов. 👉 @BookPython
Если у вас установлено приложение,
вы можете сразу перейти в канал