Python UnboundLocalError:局部变量';播放器';分配前参考
当我发现这个错误时,我正试图编写一些代码。我首先用Python UnboundLocalError:局部变量';播放器';分配前参考,python,variables,instance,Python,Variables,Instance,当我发现这个错误时,我正试图编写一些代码。我首先用nameaparam1和param2定义player类。 当我运行game函数并尝试创建player 类内部,我得到UnboundLocalError错误。这是我的密码: class player(object): def __init__ (self, name, param1 = None, param2 = None): self.param1 = param1 self.param2 = par
name
aparam1
和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不允许我在函数中创建类的实例。我找了很多,但我没有找到我要找的东西。
提前谢谢 您在
中为playerList中的player使用变量名player
,但您的类也被命名为player
。由于为该名称(在for循环中)赋值,Python将其视为局部变量,因此无法访问该名称的全局类
最好的解决方案是将类名更改为Player
,并加上大写字母p。Python中的惯例是类以大写字母开头
(前一行出现错误的原因是Python在解析函数时决定哪些变量是本地变量。因为您使用player
作为for循环的目标,所以它被标记为本地变量,但在您首次访问它时,在尝试访问类时,没有为该本地变量赋值。)错误在这一行playerList.append(player(原始输入('player%i:('x+1)))
@sukritkalla局部变量是在解析函数定义时决定的,因此对于player
函数,它将不会访问全局范围,它认为player
是一个局部变量。哦,是的。忘了吧。对不起。:)哇!我知道这是件愚蠢的事。。。谢谢你的快速回答!默认变量是在解析过程中计算的,因此在函数参数中添加raw\u input
不是一个好主意,因为即使您从未运行过此函数,它也会被调用。