当我发现这个错误时,我正在尝试编写一些代码。我首先用name
、param1
和param2
定义了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循环的目标,它被标记为本地变量,但在您第一次访问它时,在尝试访问类时,没有为该本地变量分配值。)