繁体   English   中英

当类继承自 pygame.sprite.Sprite 时,pyright 在 self.rect 上给出错误

[英]pyright giving out errors on self.rect when a class inherits from pygame.sprite.Sprite

我有一个简单的实体类,它继承自pygame.sprite.Sprite ,如下所示:

import pygame

class Entity(pygame.sprite.Sprite):
    def __init__(
        self,
        pos: tuple[int, int],
        size: tuple[int, int],
        color: str,
        *groups: pygame.sprite.AbstractGroup,
    ) -> None:
        super().__init__(*groups)
        self.velocity = pygame.Vector2((0, 0))
        self.image = pygame.Surface(size)
        self.rect = self.image.get_rect(topleft=pos)
        self.image.fill(pygame.Color(color))

但是,每当我尝试对类的self.rect ,pyright 都会发出以下错误: 版权错误

虽然代码仍然运行良好,但我想知道这些错误消息的原因是什么,我能做些什么来防止它们出现?

我尝试在所有发出该错误的块上执行“无检查”,即if self.rect is not None:...但我认为这不是一个很好的解决方案。

如果重要的话,我在本地 neovim LSP 上使用 pyright。

任何帮助将非常感激!

我建议的第一件事是确保所有精灵都在一个组中。

entities = pygame.sprite.Group()

因为错误状态

"bottom" is not a known member of "None"

我们可以假设您从 Entity 类中获得的继承的“rect”类变量没有被正确传递。

我会尝试通过在 Entity 类中打印出 self.rect 来调试错误,然后查看输出是什么,然后在 Enemy 类中打印出 self.rect 。

另外,请尝试删除 None 类型提示。 这就是为什么它可能将其声明为无的原因。

原来我必须制作一个pyrightconfig.json文件并指定我想忽略来自venvpygame库的错误。 这绝对不是最好的解决方案,但如果您知道代码是正确的,这是阻止错误的一种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM