0

これまでのコードは次のとおりです。

class Player:
    hand = []
    def take(self, card):
        hand.append(card)

そして、これは私がその関数を呼び出すときのエラーです:

    hand.append(card)
NameError: global name 'hand' is not defined

私はそれを次のようにグローバルにしようとしました:

class Player:
    hand = []
    def take(self, card):
        global hand
        hand.append(card)

それは役に立たなかった。

4

2 に答える 2

1

'self'ポインタを介して変数'hand'を参照してみてください。

class Player:
    hand = []
    def take(self, card):
        self.hand.append(card)

Pythonでは、メンバー関数のセルフポインターには、関数が呼び出されたクラスのインスタンスの値が常に含まれているため、そのインスタンスのメンバーを編集できます。

于 2013-01-27T03:27:18.310 に答える
0

まさにQuirliomが言ったこと。

もちろん、クラスのすべてのインスタンスに単一の「hand」変数を含めることを意図していない限り(つまり、グローバル変数。これは、Pythonが実行しようとしていると見なし、優れたコーディング手法ではありません)。その場合、次のようにします。

hand = []

class Player:
   def take(self, card):
      hand.append(card)

しかし、ポーカータイプのシナリオのように見えるので、これはあなたがやりたかったことではないと思います。

于 2013-01-27T03:33:35.107 に答える