我對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