2016-03-29 9 views
1

Ich habe diese Klasse:Attribute: ‚Klasse‘ Objekt hat kein Attribut ‚rect‘

class Comet(pygame.sprite.Sprite): 
def ___init___(self): 
    super().__init__() 
    self.image = pygame.Surface((100,250)) 
    self.image.fill(cometL) 
    self.rect = self.image.get_rect() 
    self.rect.y = 800 
    self.rect.x = 100 
def update(self): 
    self.rect.y -= 1+2*speed 
def reset(self): 
    self.rect.x = randint(0,700) 
    self.rect.y = randint(1000,2000) 

Ich versuche, es zu benutzen hier:

comet1 = Comet() 
    comet1.rect.x = 100 
    comet1.rect.y = 800 
    comets.add(comet1) 

Aber wenn ich bekomme ich diese Fehlermeldung:

Datei "", Zeile 36, in comet1.rect.x = 100

Attribute: 'Komet' -Objekt hat kein Attribut ‚Rect‘

Auch wenn die Klasse tut (ich glaube, ich bin irgendwie neu zu Klassen)

+0

Verwenden Sie '__init__', nicht' ___ init___ '(Ihres hatte 2 zusätzliche Unterstriche) –

Antwort

3

Ihre Definition für __init__ ist falsch. Sie haben drei Unterstriche (___init___) verwendet, daher wird diese Funktion nicht während der Instanziierung der Klasse aufgerufen.

Dies bedeutet, dass die Zeile self.rect = self.image.get_rect() nicht aufgerufen wird und daher kein rect Attribut vorhanden ist.

+0

Danke. Ich wusste, dass es so klein sein musste. –

Verwandte Themen