在Python 中列印類別的特定實例
定義Python 類別時,建立一個輸出每個實例的函數可能會很有用自有用定義格式的類別。有多種方法可以實現此目標。
利用垃圾收集器
其中一個選項涉及利用垃圾收集器:
<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>
此方法儲存清單中的引用作為弱引用。為了確保效率,請考慮在迭代後清理weakref,尤其是在處理頻繁的實例建立和刪除時。另請注意,此技術僅限於您控制下的類別。
列印實例的特定格式可以透過自訂 for 迴圈來實現。實現這種列印格式留作進一步理解的練習。
以上是如何列印Python類別的所有實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!