Как унаследовать класс Pygame? - PullRequest
0 голосов
/ 17 сентября 2018

Когда я запускаю этот код (это весь текущий код, т. Е. Всего 3 строки):

import pygame
class sp(pygame.sprite):
    pass

Я получаю:

TypeError: module() takes at most 2 arguments (3 given)

Я бы хотел наследовать этот класс, чтобы создать к нему некоторые дополнительные объекты, а также выполнить некоторые из уже существующих функций.

Например, а не ...

mysprites = pygame.sprite.Group()

Я хочу ...

mysprites = sp.Group()

Как я могу это сделать?

1 Ответ

0 голосов
/ 17 сентября 2018

Как указано в комментарии @ 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...