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>
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>
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!