"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Astuce Python : La magie de __slots__

Astuce Python : La magie de __slots__

Publié le 2024-11-02
Parcourir:155

Python Trick: The Magic of __slots__

La flexibilité de Python avec les attributs dynamiques est l'une de ses forces, mais vous souhaitez parfois optimiser l'utilisation de la mémoire et les performances.

Entrez slots, une fonctionnalité qui vous permet de définir un ensemble fixe d'attributs pour votre classe, réduisant ainsi la surcharge de mémoire et potentiellement accélérant l'accès aux attributs.


Comment ça marche

Normalement, les objets Python sont implémentés sous forme de dictionnaires pour stocker les attributs, ce qui peut entraîner une consommation de mémoire plus élevée.

En définissant des slots dans votre classe, vous demandez à Python d'utiliser une structure interne plus efficace en termes de mémoire.

Ceci est particulièrement utile lorsque vous connaissez à l'avance les attributs qu'une classe aura et que vous souhaitez éviter la surcharge d'un dictionnaire complet.

Voici une démonstration de la façon d'utiliser les emplacements :

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'

Dans cet exemple, slots restreint la classe Point aux seuls attributs x et y.

Tenter de définir un attribut non répertorié dans slots entraîne une AttributeError.


Pourquoi c'est cool

L'utilisation de slots peut conduire à des économies de mémoire significatives, en particulier lors de la création d'un grand nombre d'instances, en éliminant la surcharge du dictionnaire d'attributs.

Cela peut également améliorer la vitesse d'accès aux attributs.

Soyez toutefois prudent : les slots peuvent limiter certaines capacités dynamiques des objets Python et peuvent ne pas convenir à tous les cas d'utilisation.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/devasservice/python-trick-the-magic-of-slots-578j?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3