2017-01-09 48 views
1

現在我有一個類的值正在重置的問題,我不知道在哪裏。誰能幫忙?這裏是在Python中重置類變量

while True: 
    #some code# 
    Hub().paint(gameDisplay) 

集線器/油漆功能在一些代碼,我調用一個函數,我也用它來獲得的self.pressed值顯示在下面

def paint(self, screen): 
    if self.gimseen == 0 and self.pressed == 0: 
     screen.blit(image1, (self.x, self.y)) 
     self.pressed = (pygame.mouse.get_pressed()[0]) 
     if self.pressed == 1: 
      self.gimseen += 1 

代碼有任何其他方式除了在while循環上面添加一行表明hub = hub()的行之外,我可以這樣做嗎?

+1

你創造樞紐'一個新實例( )'每次你循環。您需要在循環的** _ _ **外創建** _一個_ **實例,然後在循環的** _ one _ **實例的循環_ **內調用paint()** ** _方法()'。 –

+0

你能告訴我怎麼做?感謝您的幫助 –

+0

當然,我剛剛離開了一個答案。 –

回答

2

變量重置的原因是因爲每次while循環循環時都會創建一個全新的Hub()實例。這意味着每當您撥打paint()時,您以前的Hub()實例的狀態都會丟失。相反,你需要創建while循環的Hub()類外的一個實例,然後調用該方法paint()環路內對Hub()的一個實例:

# only create one instance of hub. 
hub = Hub() 
# create you loop. 
while True: 
    # call the method paint on the 
    # the one instance of Hub(); hub. 
    hub.paint() 
+0

感謝您的所有幫助,但是hub.pressed的值是從我在上面某些代碼中調用的函數派生出來的,因此hub.pressed的值開始爲1,因此當我需要它開始爲0時有什麼你可以想到的,可以解決這個問題?如果您需要其他代碼或信息,我可以將它提供給您。 –

+0

@ChrisHowe我很抱歉,但我無法幫到你。評論不是解決錯誤問題的好地方。歡迎您提出另一個問題。但是請在[幫助中心](http://stackoverflow.com/tour)中參考我們的[tour](http://stackoverflow.com/tour)並使用is [on-topic](http://stackoverflow.com/help/on-topic) ://stackoverflow.com/help)。 –