python - 未绑定(bind)本地错误 : local variable 'player' referenced before assignment

标签 python variables instance

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

关于python - 未绑定(bind)本地错误 : local variable 'player' referenced before assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515430/

相关文章:

python - 获取具有特定值的单元格的列和行标签

windows - 环境变量是否具有关联性?

php - 为什么后期静态绑定(bind)不适用于 PHP 5.3 中的变量?

python - 调用 python3 的同级方法?

python - 如何使用 pandas DataFrame 绘图函数为每个子图绘制一个 ylabel

python - 如何在不实例化 Python 中的对象的情况下打印类属性?

C:无法理解该程序中的指针

json - Swift 将创建的结构实例返回给函数

Python:如何根据同一实例的另一个属性的 bool 值自动更改实例的属性?

Java-使用构造函数来放置方法的值?