2

このエラーを見つけたとき、私はいくつかのコードを実行しようとしていました。最初にaとplayerでクラスを定義します。関数を実行し、 内部でクラスのインスタンスを作成しようとすると、エラーが発生します。これが私のコードです:nameparam1param2gameplayerUnboundLocalError

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 では関数内にクラスのインスタンスを作成できないことです。たくさん検索しましたが、探していたものが見つかりませんでした。前もって感謝します!

4

1 に答える 1

6

では変数名playerを使用してfor player in playerListいますが、クラスにも という名前が付けられていますplayer。その名前に (for ループで) 値を割り当てるため、Python はそれをローカル変数として扱い、その名前のグローバル クラスにはアクセスできません。

最善の解決策は、クラス名をPlayer大文字の P に変更することです。Python の規則では、クラスは大文字で開始します。

(前の行でエラーが発生する理由は、Python が関数を解析するときにどの変数がローカルであるかを判断するためですplayer。for ループのターゲットとして使用したため、ローカルとしてマークされますが、最初にアクセスしたときに、クラスにアクセスしようとすると、そのローカル変数に値が割り当てられません。)

于 2013-07-07T19:20:30.087 に答える