我对Python很新,我正在阅读一本关于用pygame创建游戏的书。我在书中看到了这段代码。我不明白为什么Sprite.__init__(self)
是必要的。我用这个注释运行了代码,它以相同的方式运行。__init__的用途是什么?
class Creep(Sprite):
def __init__(
self, screen, img_filename, init_position,
init_direction, speed)
Sprite.__init__(self)
self.screen = screen
self.speed = speed
self.base_image = pygame.image.load(img_filename).convert_alpha()
self.image = self.base_image
任何人有任何想法,为什么这是存在的,为什么人们叫初始化?
这只是充当构造函数实例化一个类对象的特殊方法。 (甚至有创建类的构造函数)如果你不想要,你不需要它。 'self''只是一个约定的名称来说''this''。以这种方式考虑,像__init__这样的类方法需要自己的引用,第一个参数总是“self”。但有一个例外:类中的静态方法。但是,除非你明白初始和自我目的,否则我们不要到那里去。 – CppLearner 2013-05-01 08:11:20
'Sprite(self)'会实现与'Sprite .__ init __(self)'同样的事情,但是会创建一个实例来执行此操作。这个用法有点奇怪,因为它调用'__init__'方法而没有得到结果实例。 – mfitzp 2013-05-01 08:24:59
刚刚注意到'class Creep(Sprite):' - 它看起来好像在当前类上做'super(Creep,self).__ init __()'。 – mfitzp 2013-05-01 08:28:16