UnboundLocalError:赋值前引用的局部变量'player'

Car*_*ans 2 python variables instance

当我发现这个错误时,我试图做一些代码.我首先playernamea param1和a 定义类param2.当我运行该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())))
Run Code Online (Sandbox Code Playgroud)

所以基本上,我的问题是python不允许我在函数内创建类的实例.我搜索了很多,但我还没找到我要搜索的内容.提前致谢!

Bre*_*arn 5

您可以使用变量名playerfor player in playerList,但你的类也被命名player.由于您为该名称赋值(在for循环中),因此Python将其视为局部变量,因此您无法访问该名称的全局类.

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

(错误发生在前一行的原因是Python在解析函数时决定哪些变量是本地的.由于你用作playerfor循环的目标,它被标记为本地,但是当你第一次访问它时,尝试访问该类时,没有为该局部变量赋值.)