2017-11-17 5 views
0

Diese Frage wird oft gestellt, aber leider habe ich keine Antwort gefunden, die zu meinem Problem passt. Wenn möglich, bevorzuge ich eine allgemeine Antwort, da ich ein Anfänger bin, der versucht, Python zu lernen. Vielen Dank im Voraus.Python - AttributeError: 'Particle' Objekt hat kein Attribut 'display'

Dies ist der Code, den ich durch folgende ein Tutorial über die Grundlagen von Python mit der pygame Bibliothek bekam:

import pygame 

background_colour = (255, 255, 255) 
(width, height) = (300, 200) 


class Particle: 
    def __init__(self, x, y, size): 
     self.x = x 
     self.y = y 
     self.size = size 
     self.colour = (0, 0, 255) 
     self.thickness = 1 


screen = pygame.display.set_mode((width, height)) 


def display(self): 
    pygame.draw.circle(screen, self.colour, (self.x, self.y), self.size, self.thickness) 


pygame.display.set_caption('Agar') 
screen.fill(background_colour) 
pygame.display.flip() 

running = True 
my_first_particle = Particle(150, 50, 15) 
my_first_particle.display() 
while running: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      running = False 

Es wird verwendet, um ein Fenster für Spiele zu schaffen, mit einem Kreis in ihm. Der Kreis ist definiert als eine Klasse, die später auf ähnliche Weise mehrfach verwendet wird.

bekam ich folgende Fehlermeldung:

Traceback (most recent call last): 
    File "C:/Users/20172542/PycharmProjects/agarTryout/Agar.py", line 29, in <module> 
    my_first_particle.display() 
AttributeError: 'Particle' object has no attribute 'display' 

Welches Prinzip bin ich nicht verstehen, und was für diesen Fehler die spezifische Lösung?

Vielen Dank für Ihre Zeit und Mühe.

+1

Ihre 'Particle' Klasse definiert keine' display' Methode. Wolltest du 'Display' auf etwas anderem nennen? Vielleicht "Pygame"? – FamousJameous

+0

Nicht sicher, was Sie genau fragen - der Fehler ist klar. Sie rufen eine nicht existierende Methode auf. – jhpratt

Antwort

0

Die definierte display Funktion ist nicht in Particle, sondern in der global (nicht sicher, ob dieser Name richtig ist) Ebene Ihres Skripts. Einzug ist in Python wichtig, da es keine Klammern hat. Verschieben Sie die Funktion nach Ihrer __init__ Funktion mit der gleichen Einrückung.

Auch ich denke, Sie sollten screen über Ihre Particle Definition verschieben.

0

Durch die Definition der Partikelklasse hat my_first_particle (eine Instanz von Particle) kein Anzeigeattribut.

Die Definition der Anzeigefunktion sollte Teil der Partikelklassendefinition sein.

Schauen Sie sich das Python Classes Tutorial an.

Verwandte Themen