当我运行此代码时(这是当前的完整代码,即3行):
import pygame
class sp(pygame.sprite):
pass
我得到:
TypeError: module() takes at most 2 arguments (3 given)
我想继承此类以为其创建一些其他对象,并执行一些已经存在的功能。
例如,而不是...
mysprites = pygame.sprite.Group()
我想要...
mysprites = sp.Group()
我该怎么做?
答案 0 :(得分:3)
正如@ 101在评论中提到的,sprite
是pygame
[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.