Python でクラスの特定のインスタンスを出力する
Python クラスを定義する場合、すべてのインスタンスを出力する関数を作成すると便利です。カスタム形式でのクラスの。この目標を達成するには、複数のアプローチがあります。
ガベージ コレクターの使用
1 つのオプションには、ガベージ コレクターの使用が含まれます。
<code class="python">import gc for obj in gc.get_objects(): if isinstance(obj, some_class): dome_something(obj)</code>
ただし、このメソッドは多数のオブジェクトを処理する場合に遅くなる可能性があり、コントロール内の型にのみ適用できます。
Mixin と WeakRefs を使用する
あるいは、mixin を実装することもできます。
<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>
このアプローチでは、参照をリスト内に弱い参照として保存します。効率を確保するために、特にインスタンスの作成と削除を頻繁に行う場合は、反復後にweakrefsをクリーンアップすることを検討してください。また、この手法は制御下のクラスに限定されることに注意してください。
インスタンスを印刷するための特定の形式は、カスタム for ループを介して実装できます。この印刷形式の実装は、さらに理解するための演習として残されています。
以上がPython クラスのすべてのインスタンスを出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。