【发布时间】:2020-06-21 13:57:37
【问题描述】:
import util
class C():
save = util.save
setattr(C, 'load', util.load)
C.save 对 linter 可见 - 但 C.load 不可见。因此,从类本身和从外部分配类方法之间存在一些差异。文档构建者的交易相同;例如Sphinx 不会承认:meth:C.load - 相反,需要做:func:util.load,如果load 是C 的方法,这是误导。 IDE (Spyder) 也无法通过self.load 代码“转到”方法。
最终目标是让 linter (+docs & IDE) 将 load 识别为 C 的方法,就像 C.save 一样,但类方法分配需要是动态的 (context)。这可以实现吗?
注意:动态分配的目的是自动从模块中提取方法(例如util),而不是在添加/删除方法时手动更新C。
【问题讨论】:
标签: python python-3.x python-sphinx static-analysis