【问题标题】:Pylint Error with Python Turtle even though code executes properly即使代码正确执行,Python Turtle 也会出现 Pylint 错误
【发布时间】:2020-07-10 19:49:59
【问题描述】:
import turtle 


class Polygon: 
    def __init__(self,sides,name,size=100,color='black',line_thickness=3):
        self.sides=sides
        self.name=name 
        self.size=size
        self.color=color
        self.line_thickness=line_thickness
        self.interior_angles=(self.sides-2)*180
        self.angle=self.interior_angles/self.sides
    
    def draw(self):
        turtle.color(self.color)
        turtle.pensize(self.line_thickness)
        for i in range(self.sides): 
            turtle.forward(self.size)
            turtle.right(180-self.angle)
        turtle.done()

square=Polygon(4,'Square')
square.draw()

考虑到上面的代码,在 VSCODE 中运行,我想知道如何摆脱所有不断弹出的“pylint”错误,这些错误提示类似于以下内容:

Module 'turtle' has no 'color' member (pylint no-member)

虽然代码执行得很好,但继续查看错误行令人不安,我想知道是否有解决方案。谢谢你的时间!

【问题讨论】:

  • 有很多方法可以抑制错误信息。这就是你所追求的吗?
  • 不错!有没有办法抑制这个特定的错误消息,但仍然能够接收有关其他错误的通知?或者这是不可能的?谢谢丹尼斯
  • 丹尼斯·斯派洛,你能帮忙吗?
  • 是的,您可以将抑制限制为一项特定检查,并且您可以控制从一行代码到安装的所有 Pylint 操作的范围。您应该能够在Pylint documentationHow do I disable a Pylint warning? 中找到方法。

标签: python visual-studio-code pylint python-turtle


【解决方案1】:

与其抑制错误消息,不如修复代码? Turtle 提供了两种 API,一种是功能,一种是面向对象。功能性的派生自面向对象的加载时间。分析工具无法查看源库文件内部并查看功能签名。

既然你定义了你自己的Polygonobject,我不明白你为什么不使用面向对象的turtle接口。我在下面使用的import 阻塞了功能接口,只允许访问面向对象的接口:

from turtle import Screen, Turtle

class Polygon:
    def __init__(self, sides, name, size=100, color='black', line_thickness=3):
        self.sides = sides
        self.name = name
        self.size = size
        self.color = color
        self.line_thickness = line_thickness
        self.interior_angles = (self.sides - 2) * 180
        self.angle = self.interior_angles / self.sides

    def draw(self):
        turtle.color(self.color)
        turtle.pensize(self.line_thickness)

        for _ in range(self.sides):
            turtle.forward(self.size)
            turtle.right(180 - self.angle)

screen = Screen()
turtle = Turtle()

square = Polygon(4, 'Square')
square.draw()

screen.exitonclick()

注意代码的细微变化以适应面向对象的 API。现在尝试分析代码,看看这是否能解决您的问题。

【讨论】:

  • 作为 python 新手,这是我第一次尝试使用 OOP。你能解释一下你的turtle=Turtle(),对应于turtle.color()还是turtle.pensize()。基本上,主块中的代码 turtle=Turtle() 是否与您的函数中给出的代码相关?
  • 非常感谢您的回答
  • @JohnFeldhausen,在您的代码中,当您说turtle.color() 时,您指的是 turtle 模块 中的color() 函数进口的。当我说turtle.color() 时,我指的是turtle = Turtle() 创建的turtle 实例的color() 方法。我意识到这可能会造成混淆,这就是为什么我使用import 来关闭功能接口并专注于面向对象的接口。
猜你喜欢
  • 2021-11-28
  • 1970-01-01
  • 2021-01-26
  • 2016-03-23
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
相关资源
最近更新 更多