上面提到的函数是由代码生成的。 PyLint 只做静态分析。
我写了一个 astroid brain(插件)来帮助 PyLint 使用的 Python 解析器添加这些功能。
找到您安装 PyLint 的位置(目录以 Lib\site-packages\pylint 或 Lib/site-packages/pylint 结尾。
pylint 旁边是一个目录astroid。
在目录Lib\site-packages\astroid\brain或Lib/site-packages/astroid/brain创建一个文件brain_turtle.py,内容如下:
import astroid
def register(linter):
pass
def transform():
import turtle
def _make_global_funcs(functions, cls):
funcs = []
for methodname in functions:
method = getattr(cls, methodname)
paramslist, argslist = turtle.getmethparlist(method)
if paramslist == "": continue
funcs.append(f"def {methodname}{paramslist}: return")
return funcs
funcs = []
funcs.extend(_make_global_funcs(turtle._tg_screen_functions, turtle._Screen))
funcs.extend(_make_global_funcs(turtle._tg_turtle_functions, turtle.Turtle))
return astroid.parse('\n'.join(funcs))
astroid.register_module_extender(astroid.MANAGER, "turtle", transform)
根据 PyLint 的 IDE 集成,您可能需要重新启动 IDE。
我还创建了一个astroid issue 来将此大脑添加到 PyLint (Astroid) 的下一次更新中
您也可以将此文件与pylint 的--load-plugins 命令行选项一起使用。请参阅PyLint documentation for IDE integration。使用的文件需要在你的PYTHONPATH