我正在尝试创建一个模型来表示 python 应用程序执行的一部分(记录一些对象的创建、访问属性、循环等)。
我无法解决的一个问题是,我无法找到一种方法来识别每次遇到的对象。
有什么方法可以在应用程序执行期间跟踪每个对象(以知道某个对象与之前遇到的对象相同还是另一个对象)?
我尝试使用
id(x)
但这是不正确的,因为 id
函数没有有意义的返回值,甚至在不同对象的生命周期不重叠的情况下具有重复值(至少在 CPython 中,我相信,如它返回对象的内存地址)。
我还尝试在整个代码中将
UUID
附加到对象上,以使用它来跟踪它们,但是并非所有对象都允许向它们添加属性。
我尝试将内置实例转换为一些从它们继承的自定义类,以便能够将 UUID
附加到它们。比如:
class CustomList(list):
pass
但话又说回来,我相信这可能会带来性能问题,而且还有(我认为是无限的)其他不可变对象,例如
UUID
对象本身,它们不允许我为它们附加属性。
也许你可以尝试在将对象初始化为键并将对象初始化为值时使用字典作为变量名称。