Comment imprimer toutes les instances d'une classe Python ?

Susan Sarandon
Libérer: 2024-11-05 09:08:02
original
238 Les gens l'ont consulté

How to Print All Instances of a Python Class?

Impression d'instances spécifiques d'une classe en Python

Lors de la définition d'une classe Python, il peut être utile de créer une fonction qui génère chaque instance de la classe dans un format personnalisé. Il existe plusieurs approches pour atteindre cet objectif.

Utilisation du garbage collector

Une option consiste à utiliser le garbage collector :

<code class="python">import gc

for obj in gc.get_objects():
    if isinstance(obj, some_class):
        dome_something(obj)</code>
Copier après la connexion

Cependant, cette méthode peut être lente lorsqu'il s'agit de nombreux objets et n'est applicable qu'aux types sous votre contrôle.

Emploi d'un Mixin et de WeakRefs

Alternativement, vous pouvez implémenter un mixin et les références faibles comme suit :

<code class="python">from collections import defaultdict
import weakref

class KeepRefs(object):
    __refs__ = defaultdict(list)

    def __init__(self):
        self.__refs__[self.__class__].append(weakref.ref(self))

    @classmethod
    def get_instances(cls):
        for inst_ref in cls.__refs__[cls]:
            inst = inst_ref()
            if inst is not None:
                yield inst</code>
Copier après la connexion

Cette approche stocke les références sous forme de références faibles dans une liste. Pour garantir l'efficacité, envisagez de nettoyer les références faibles après l'itération, en particulier lorsqu'il s'agit de créations et de suppressions fréquentes d'instances. Notez également que cette technique est limitée aux classes sous votre contrôle.

Le format spécifique pour l'impression des instances peut être implémenté via des boucles for personnalisées. La mise en œuvre de ce format d'impression est laissée en exercice pour une meilleure compréhension.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!