调用类后,括号会做什么?

克里斯蒂安·R

我一直在尝试制作一个简单的播放器类,其中包含python中所有重要的播放器功能。当我注意到一个使用括号的类时,我只是进入pygame模块。我花时间学习了类在python中的功能,但是找不到为什么在类后使用括号。这是我的主要代码。

class plr(pygame.sprite.Sprite):
    def __init__(self):
        plr.__init__(self)
        self.image = pygame.Surface((20,20))
        self.image.fill(black) 

有什么解释吗?

布莱克金

class语句行尾的括号包围着您要定义的类的基类。在通常情况下,只有一个基类(object如果不需要其他基类,则可能是这样)。在Python 3中,您可以省略基类,并且object默认情况下会使用该基类,但是您应该始终object在Python 2中显式命名(或某些子类)作为基类,否则您将获得“旧式”类,您可能不想要。(旧样式类已经完全过时了,如果您不熟悉Python,则不值得学习。它们在Python 3中已不存在。)

指定基类可使您的新类从基类继承方法和其他行为。继承是面向对象编程的关键部分,因此您可能会遇到很多!

在您的特定示例中,plr该类继承自pygame.sprite.Sprite这意味着您可以Sprite在的实例上调用方法plr,而这些方法通常只会起作用。如果要自定义对象的行为,则可以覆盖其中的一些行为。

我确实在您的代码中看到错误。__init__您编写方法将无限递归,因为它会调用plr.__init__,这本身就是!您可能希望它调用pygame.sprite.Sprite.__init__,这是最重要的。您可以使用我上面提到的长名称,也可以使用super(更好)进行该调用尝试:

class plr(pygame.sprite.Sprite):
    def __init__(self):
        super(plr, self).__init__()
        ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档