2017-11-17 330 views
0

這個問題被問了很多,但不幸的是我發現沒有答案適合我的問題。如果可能的話,我更喜歡一個通用的答案,因爲我是一個試圖學習Python的新手。先謝謝你。Python - AttributeError:'粒子'對象沒有屬性'顯示'

這是我通過對蟒蛇的使用pygame的圖書館基礎下面的教程代碼:

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 

它被用來創建遊戲的窗口,裏面有一個圓圈。該圓被定義爲一個類,以後將以類似的方式多次使用。

我得到了以下錯誤:

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' 

什麼原理我我不理解,什麼是此錯誤的特定解決方案?

謝謝你的時間和精力。

+1

你的'粒子'類沒有定義'display'方法。你是否打算在其他東西上調用'display'?也許'pygame'? – FamousJameous

+0

不確定你在問什麼 - 錯誤很明顯。你正在調用一個不存在的方法。 – jhpratt

回答

0

定義的display函數不在Particle中,而是位於腳本的global(不確定此名稱是否正確)級別。縮進在python中很重要,因爲它沒有括號。在您的__init__函數之後移動該功能,並使用相同的縮進。

此外,我想你應該移動screen高於你的Particle的定義。

0

通過您對粒子類的定義,my_first_particle(粒子的一個實例)沒有顯示屬性。

它看起來像顯示函數的定義應該是粒子類定義的一部分。

查看Python類教程。

相關問題