在 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中文网其他相关文章!