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 給了我一個警告:
類“Sprite”的未決議屬性參考“do_stuff”
非常可以理解,通常我只會在被繼承類覆寫的超類中放置一個占位符方法。但是,Sprite 類不是我的,我不想惹它,那么這里推薦的行動方案是什么?忽略警告?
uj5u.com熱心網友回復:
您可以在呼叫之前檢查該方法是否存在:
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成員的孩子的孩子班級。
編輯:從評論中創建一個中間抽象類可能很有用,命名ActiveStripe為對所有具有do_stuff成員的后代進行分組。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/459990.html
標籤:python-3.x 遗产 警告
上一篇:C#變數的繼承及其修改
