正在搜索python对象层次结构

问题描述 投票:1回答:1

我正在使用一个不稳定的python库,该库正在对其各个git子模块中的API进行更改。每隔几周,某些成员或方法的位置将被更改或重命名。例如,表达式

vk.rinkront[0].asyncamera.printout()

几周前工作,现在asyncamera成员位于

vk.toplink.enabledata.tx[0].asyncamera[0].print()

我设法通过grep ing,git diff ing,ipython自动完成功能,并且通常会四处摸索来找出方法的新位置。这个过程很痛苦,因为存储库已经相当抽象,并且可以从python shell观察到的成员名称不一定会出现在git子模块代码中。

是否有一个python例程在检查关键字(例如print)时执行对象层次结构的图形遍历?(如果否,我将修改一些bfs / dfs来检查子节点的类型,然后再将__dict__,数组,dir()等内容推入/添加到队列/堆栈中。但是其中某些必须已经出现)之前解决此问题,并提出一个更优雅的解决方案。)

python object hierarchy graph-traversal
1个回答
1
投票

好,我为您...您可能应该只锁定一个版本,使用它直到API稳定为止,然后再升级。这就是为什么复杂项目专注于依赖项版本控制的原因。

有一种方法,但这并不是真正的标准。 dir()内置函数返回类的所有属性和方法的字符串名称列表。稍作努力,您就可以编写一个递归挖掘的脚本。

但是,最终的问题是,当您尝试调查类成员时,您将遇到无限递归循环。您需要添加智能控件以识别模式或限制搜索的深度。

© www.soinside.com 2019 - 2024. All rights reserved.