"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 > Como rastrear e recuperar variáveis ​​de instância com eficiência em classes Python?

Como rastrear e recuperar variáveis ​​de instância com eficiência em classes Python?

Publicado em 2024-11-09
Navegar:449

 How to Efficiently Track and Retrieve Instance Variables in Python Classes?

Rastreamento de instâncias de classe para coleção de variáveis

Manter uma lista de instâncias para uma classe específica permite a recuperação eficiente de variáveis ​​específicas de cada instância em um estágio posterior do programa.

Abordagem de variável de classe

Um método adequado para rastrear instâncias de classe é utilizar uma variável de classe. O exemplo a seguir ilustra essa abordagem:

class Foo:
    instances = []

    def __init__(self):
        self.x = {}
        Foo.instances.append(self)

Esta técnica cria uma lista compartilhada de instâncias dentro da classe. À medida que cada instância é criada, ela se anexa à lista.

Recuperando variáveis ​​de instância

Para coletar x dicionários de todas as instâncias no final do programa, crie um novo dicionário:

foo_vars = {id(instance): instance.x for instance in Foo.instances}

Aqui, id() fornece identificadores exclusivos para cada instância, permitindo a criação de um dicionário com IDs de instância como chaves e dicionários x como valores.

Lista compartilhada

A abordagem de variável de classe garante que apenas uma lista, instâncias, é mantida em todas as instâncias, independentemente do seu número. Isso elimina a necessidade de rastrear listas individuais para cada instância.

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