在调试时访问类的所有实例

Jon*_*han 2 python debugging pydev

在调试时,python\pydev中有没有办法查看和访问某个类的实例?
例如,如果我SomeClass在单个python解释器脚本中定义和各种模块实例化此类,是否有办法查看解释器中存在多少这样的实例并以中心方式访问它们的属性,而不强制代码保存引用从一个位置(例如定义类的模块)到它们?

unu*_*tbu 6

您可以使用gc.get_objects()找到所有这些对象:

例如,如果Foo在模块中定义类othermod.py:

class Foo(object):
    pass

f2 = Foo()
Run Code Online (Sandbox Code Playgroud)

那么你可以像这样计算Foo脚本中的所有实例script.py:

import gc
import othermod

f = othermod.Foo()

objs = gc.get_objects()
# print(len(objs))
# 3519

print(len([obj for obj in objs if isinstance(obj,othermod.Foo)]))
# 2
Run Code Online (Sandbox Code Playgroud)

警告:gc.get_objects不跟踪原子类型的实例(如intstr),但听起来这不是你想要跟踪的那种对象.