UnboundLocalError:局部变量'播放器'分配前引用



当我发现这个错误时,我正在尝试编写一些代码。我首先用nameparam1param2定义了player类。当我运行game函数并尝试创建player的实例时类中,我得到了UnboundLocalError错误。这是我的代码:

class player(object):
    def __init__ (self, name, param1 = None, param2 = None):
        self.param1 = param1
        self.param2 = param2
        self.name = name
def game(n = int(raw_input('How many players? '))):
    playerList = [] 
    for x in range(n):
        playerList.append(player(raw_input('Player %i: ' %(x+1))))
    for player in playerList:
        player.param1 = int(raw_input('%s, how many do you predict? ' %(player.name.upper())))

所以基本上,我的问题是python不允许我在函数中创建类的实例。我找了很多,但没有找到我要找的东西。提前感谢!

您在for player in playerList中使用了变量名player,但您的类也被命名为player。由于您为该名称指定了一个值(在for循环中),Python将其视为局部变量,因此您无法访问该名称的全局类。

最好的解决方案是将类名更改为带有大写p的Player。Python中的约定是类以大写字母开头。

(前一行出现错误的原因是Python在解析函数时决定哪些变量是本地变量。由于您使用player作为for循环的目标,它被标记为本地变量,但在您第一次访问它时,在尝试访问类时,没有为该本地变量分配值。)

最新更新