在类变量中,不能在函数中进行修改

时间:2013-01-27 03:21:57

标签: python class python-3.x

这是到目前为止的代码:

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)

它没有帮助。

2 个答案:

答案 0 :(得分:1)

尝试通过'self'指针引用变量'hand':

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

在Python中,在成员函数中,self指针始终包含调用函数的类实例的值,允许您编辑该实例的成员。

答案 1 :(得分:0)

Quirliom说的正是如此。

除非你打算在所有类的实例中都有一个“hand”变量(即一个全局变量,这是Python认为你正在尝试做的,而且这不是很好的编码实践)。在这种情况下,您可以:

hand = []

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

但我认为这不是你想要做的,因为它看起来像扑克式场景。