2017-01-09 11 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ループの上にラインを追加する以外にこれを行うことができますか?

+1

あなたは 'ハブ(の新しいインスタンスを作成します) 'を繰り返します。ループの** _ _ _ **インスタンスを作成してから、 'Hub 'の** _ _ _インスタンスのループの' paint() '** _ inside _ **メソッドを呼び出す必要があります() 'を返します。 –

+0

どうすればいいか教えてください。あなたの助けをありがとう –

+0

確かに、私は答えを残しました。 –

答えて

2

変数がリセットされるのは、whileループが繰り返されるたびにHub()の新しいインスタンスを作成するためです。つまり、paint()に電話するたびに、以前のインスタンスであるHub()の状態は失われます。代わりに、あなたは、whileループの外にHub()クラスのインスタンスを1つ作成し、Hub()の1つのインスタンス上のループの内側に方法paint()を呼び出す必要があります:

# 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の値は0から始める必要があるときに1になります。あなたはこの問題を解決することができると思う何かがありますか?あなたが必要とする他のコードや情報があれば、私はあなたにそれを手に入れることができます。 –

+0

@ChrisHowe申し訳ありませんが、ここでお手伝いできません。コメントはバグの問題を解決するのには適していません。別の質問をすることを歓迎します。しかし、私たちの[ツアー](http://stackoverflow.com/tour)を読んで[ヘルプセンター](http://stackoverflow.com/tour)の[on-topic](http://stackoverflow.com/help/on-topic) ://stackoverflow.com/help)。 –

関連する問題