如何继承pygame类?

时间:2018-09-17 00:31:09

标签: python python-3.x class inheritance pygame

当我运行此代码时(这是当前的完整代码,即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 :(得分:3)

正如@ 101在评论中提到的,spritepygame [sub] 模块,但它本身并不是Python class。要执行您想要的操作,您需要从模块定义的Sprite类派生您的子类。这意味着使用以下内容。 (在pygame documentation中还有一个示例,它创建一个Sprite子类的方式略有不同,您可能应该看看。)

还要注意,类名的首字母应根据PEP 8 - Style Guide for Python Code的“命名约定”部分大写,因此,我也已对此进行了固定。

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.