Когда я запускаю этот код (это текущий весь код, то есть всего 3 строки):
import pygame
class sp(pygame.sprite):
pass
Я получил:
TypeError: module() takes at most 2 arguments (3 given)
Я хотел бы унаследовать этот класс, чтобы создать к нему дополнительные объекты, а также выполнить некоторые из уже существующих функций.
Например, а не ...
mysprites = pygame.sprite.Group()
Я хочу...
mysprites = sp.Group()
Как я могу это сделать?
@ 101, я сейчас выложил весь код, т.е. всего 3 строчки ...
Подождите, sprite - это модуль, а не класс, поэтому вы не можете создать его подкласс. Однако вы можете просто импортировать все из sprite в новый модуль.






Как указано в комментарии @ 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.
Хорошо, а как выполнить текущий объект «Группа»? mysprites = Sp.Group()
Последнее обновление моего ответа также касается этого аспекта вашей проблемы. Также см. Как использовать группы спрайтов в pygame.
Когда вы создаете подкласс
sprite, вы отменяете метод__init__? Если да, можете ли вы показать этот код?