«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Хитрость Python: магия __slots__

Хитрость Python: магия __slots__

Опубликовано 2 ноября 2024 г.
Просматривать:279

Python Trick: The Magic of __slots__

Гибкость Python с динамическими атрибутами — одна из его сильных сторон, но иногда требуется оптимизировать использование памяти и производительность.

Введите slots, функцию, которая позволяет вам определить фиксированный набор атрибутов для вашего класса, уменьшая нагрузку на память и потенциально ускоряя доступ к атрибутам.


Как это работает

Обычно объекты Python реализуются как словари для хранения атрибутов, что может привести к более высокому потреблению памяти.

Определяя слоты в своем классе, вы указываете Python использовать более эффективную внутреннюю структуру.

Это особенно полезно, когда вы заранее знаете, какие атрибуты будет иметь класс, и хотите избежать накладных расходов на полный словарь.

Вот демонстрация того, как использовать слоты:

class Point:
    __slots__ = ['x', 'y']  # Define the allowed attributes

    def __init__(self, x, y):
        self.x = x
        self.y = y


# Create a Point instance
p = Point(10, 20)

print(p.x)  # Output: 10
print(p.y)  # Output: 20

# Attempting to add a new attribute will raise an AttributeError
try:
    p.z = 30
except AttributeError as e:
    print(e)  # Output: 'Point' object has no attribute 'z'

# Output:
# 10
# 20
# 'Point' object has no attribute 'z'

В этом примере slots ограничивает класс Point только атрибутами x и y.

Попытка установить любой атрибут, не указанный в слотах приводит к ошибке AttributeError.


Почему это круто

Использование слотов может привести к значительной экономии памяти, особенно при создании большого количества экземпляров, за счет устранения накладных расходов на словарь атрибутов.

Это также может улучшить скорость доступа к атрибутам.

Однако будьте осторожны: слоты могут ограничивать некоторые динамические возможности объектов Python и могут подходить не для всех случаев использования.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/devasservice/python-trick-the-magic-of-slots-578j?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3