"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Truque do Python: a magia dos __slots__

Truque do Python: a magia dos __slots__

Publicado em 2024-11-02
Navegar:762

Python Trick: The Magic of __slots__

A flexibilidade do Python com atributos dinâmicos é um de seus pontos fortes, mas às vezes você deseja otimizar o uso e o desempenho da memória.

Enter slots, um recurso que permite definir um conjunto fixo de atributos para sua classe, reduzindo a sobrecarga de memória e potencialmente acelerando o acesso aos atributos.


Como funciona

Normalmente, os objetos Python são implementados como dicionários para armazenar atributos, o que pode levar a um maior consumo de memória.

Ao definir slots em sua classe, você instrui o Python a usar uma estrutura interna com maior eficiência de memória.

Isso é especialmente útil quando você conhece antecipadamente os atributos que uma classe terá e deseja evitar a sobrecarga de um dicionário completo.

Aqui está uma demonstração de como usar slots:

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'

Neste exemplo, slots restringe a classe Point apenas aos atributos x e y.

A tentativa de definir qualquer atributo não listado em slots resulta em um AttributeError.


Por que é legal

O uso de slots pode levar a uma economia significativa de memória, especialmente ao criar um grande número de instâncias, eliminando a sobrecarga do dicionário de atributos.

Também pode melhorar a velocidade de acesso aos atributos.

No entanto, tenha cuidado: slots podem limitar alguns recursos dinâmicos de objetos Python e podem não ser adequados para todos os casos de uso.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/devasservice/python-trick-the-magic-of-slots-578j?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3