我正在使用一个不稳定的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()等内容推入/添加到队列/堆栈中。但是其中某些必须已经出现)之前解决此问题,并提出一个更优雅的解决方案。)
好,我为您...您可能应该只锁定一个版本,使用它直到API稳定为止,然后再升级。这就是为什么复杂项目专注于依赖项版本控制的原因。
有一种方法,但这并不是真正的标准。 dir()
内置函数返回类的所有属性和方法的字符串名称列表。稍作努力,您就可以编写一个递归挖掘的脚本。
但是,最终的问题是,当您尝试调查类成员时,您将遇到无限递归循环。您需要添加智能控件以识别模式或限制搜索的深度。