由于某些无法控制的体系结构原因,我经常使用的一个对象,它希望完整的代码完成是在源代码中已存在的静态功能之上的多个功能的动态组合。
import lgb.reqs.plan
# Various imports which dynamically extend the smallform
import lgb_extensions.water_extras
import lgb_extensions.toolkit_extras
d = c.req[0] # type: lgb.reqs.plan.smallform
d = d # type: lgb_extensions.water_extras.common
d = d # type: lgb_extensions.toolkit_extras.common
# Now I get the autocomplete on d as I type "d."
d.
我发现重新分配d
方法很有效,但是感觉不对。有没有办法用元组或其他东西键入提示?我尝试过并且无法弄清楚。
我发现jupyter笔记本非常适合自动完成,如果我真的需要探索未知的代码库,我将跳入ipython或Notebook会话,但是在这种情况下,我对代码非常熟悉基本,只是希望自动完成功能更好,因为我永远都记不清所谓的东西了。如果重要的话,我主要在pycharm或atom中。上面的解决方案已经解决了我的问题,如果只有几个扩展名,但是当我有10个扩展对象的东西时,它不起作用。在我的常用情况下,我大约有20件事扩展了我想自动完成的对象。
答案 0 :(得分:1)
您也许可以在这里使用Union
。更重要的是,一个名称在不同情况下可以容纳不同类型。
例如。
from typing import Union
a = f() # type: Union[str, int]
d. # now get autocompletion for str and int from IDEs