[英]Python/Pygame What is inherited from pygame.sprite.Sprite?
[英]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
文件并指定我想忽略来自venv
中pygame
库的错误。 这绝对不是最好的解决方案,但如果您知道代码是正确的,这是阻止错误的一种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.