E1101:Module 'turtle' 没有 'forward' 成员
E1101:Module 'turtle' has no 'forward' member
我是编程新手,我下载了 Python 并在 Visual Studio 代码中得到了 运行。我在摆弄 turtle 模块及其功能。
函数本身有效,但 pylint
将其标记为错误,并表示没有像我编码的那样 "member"。
我该如何解决这个错误? (我不想将其设置为 "ignore" 问题,而是认识到我输入的代码是有效的并且来自 turtle 模块)
turtle 模块暴露了两个接口,一个 functional 一个和一个 object-oriented 一个。功能接口是在加载时从面向对象的接口以编程方式派生的,因此静态分析工具看不到它,因此出现 pylint
错误。而不是功能接口:
import turtle
turtle.forward(100)
turtle.mainloop()
为此 pylint
生成 no-member
,尝试使用面向对象的接口:
from turtle import Screen, Turtle
screen = Screen()
turtle = Turtle()
turtle.forward(100)
screen.mainloop()
这个特别的 import
乌龟屏蔽了功能接口,我推荐它,因为人们经常通过混合 OOP 和功能接口来 运行 进入错误。
提到的函数是代码生成的。 PyLint 只做静态分析。
我写了一个星形大脑(插件)来帮助 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
上
我是编程新手,我下载了 Python 并在 Visual Studio 代码中得到了 运行。我在摆弄 turtle 模块及其功能。
函数本身有效,但 pylint
将其标记为错误,并表示没有像我编码的那样 "member"。
我该如何解决这个错误? (我不想将其设置为 "ignore" 问题,而是认识到我输入的代码是有效的并且来自 turtle 模块)
turtle 模块暴露了两个接口,一个 functional 一个和一个 object-oriented 一个。功能接口是在加载时从面向对象的接口以编程方式派生的,因此静态分析工具看不到它,因此出现 pylint
错误。而不是功能接口:
import turtle
turtle.forward(100)
turtle.mainloop()
为此 pylint
生成 no-member
,尝试使用面向对象的接口:
from turtle import Screen, Turtle
screen = Screen()
turtle = Turtle()
turtle.forward(100)
screen.mainloop()
这个特别的 import
乌龟屏蔽了功能接口,我推荐它,因为人们经常通过混合 OOP 和功能接口来 运行 进入错误。
提到的函数是代码生成的。 PyLint 只做静态分析。
我写了一个星形大脑(插件)来帮助 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