已经用python写了一个动态系统仿真程序,其中包括了许多嵌套类。现在想在不改变原仿真代码的情况下,写一个Probe类,在仿真过程中,能够在仿真过程中访问系统的任意嵌套层级的对象的成员, 记录下其动态变化过程。
希望把这个Probe类做的尽量通用,初始化的时候只提供["obj_a.obj_a_k.element_x", "obj_c.obj_c_b.obj_c_b_d.element_y", ...]这样的一个被检测变量列表,就能建立对指定内部变量的一个引用, 在仿真循环的时候, 不断调用Probe类的inspect()方法, 访问记录被检测变量的数值.
我试过id()和_ctypes. PyObj_FromPtr()方法, 但被指向对象如果是int, float这种数值变量, 当变量改变后, 被指向对象的数值成员变量的id就变了, 用原id无法获得新的数据
现在做的方法是用getattr(), 如果层级较深就要循环调好几层, 比较麻烦.
想问问有没有办法对数值对象也像类对象那样建立一个引用, 直接读就行了? Thx