Как указано в комментарии @ 101, sprite
является pygame
[sub] модулем , но не является Python class
. Чтобы сделать то, что вы хотите, вам нужно вывести ваш подкласс из класса Sprite
, который определен модулем. Это означает, что вы используете что-то вроде строки ниже. (В документации pygame
есть также несколько иной способ создания подкласса Sprite
, на который вам, вероятно, стоит взглянуть.)
Обратите внимание, что имена классов должны иметь свою начальную букву в верхнем регистре в соответствии с разделом «Соглашения об именах» PEP 8 - Руководство по стилю для кода Python , поэтому я также исправил это.
from pygame.sprite import Sprite
class Sp(Sprite):
pass
Чтобы ответить на другую часть вашего вопроса, где вы пытаетесь использовать sp.Group()
. Проблема в том, что вы пытаетесь сделать, просто неправильно. Group
- это отдельный класс-контейнер, который также определен в модуле pygame.sprite
. Первичная цель - сгруппировать группу Sprite
экземпляров классов. Он должен нормально обрабатывать ваш Sprite
подкласс. Ниже приведен код, показывающий, как это можно сделать:
from pygame.sprite import Group, Sprite
class Sp(Sprite):
pass
# Create a Group container instance and put some Sp class instances in it.
mygroup = Group()
sp1 = Sp() # Create first instance of subclass.
mygroup.add(sp1) # Put it in the Group (NOT via sp1.Group())
sp2 = Sp() # Create another instance of subclass.
mygroup.add(sp2) # Put it into the Group, too.