继承期间未解析的引用

Unresolved reference during inheritance

import pygame
from pygame.sprite import Sprite


class FooObject(Sprite):
    def __init__(self):
        Sprite.__init__(self)
    
    def do_stuff(self):
        ...doing stuff
    
    
objects = pygame.sprite.Group()
my_obj = FooObject()
objects.add(my_obj)


for obj in objects:
    obj.do_stuff()

代码运行良好。然而,最后一行 Pycharm 给了我一个警告:

未解析的属性引用 'do_stuff' class 'Sprite'

很好理解,通常我会在超class中放置一个占位符方法,它会被继承class覆盖。但是,Sprite class 不是我的,我不想弄乱它,那么这里推荐的操作步骤是什么?忽略警告?

您可以在调用之前检查该方法是否存在:

for obj in objects:
    if hasattr(obj, 'do_stuff'):
        obj.do_stuff()

for obj in objects:
    if isinstance(obj, FooObject):
        obj.do_stuff()

其中 FooObject 可能是拥有 do_stuff 成员的所有 children 中的 child class。

编辑: 从评论中可以创建一个名为 ActiveStripe 的中间摘要 class 来对所有具有 do_stuff 成员的后代进行分组。