2

クラスを作成する関数を作成し、これらのクラスをリストに追加しようとしています。

プログラムを実行すると、次のエラーが発生します。

NameError:名前'jackie'が定義されていません

これは、関数内でのみインスタンスを使用できることを意味します。どうすればグローバルにすることができますか?、試しglobal eval('jackie')ましたが、機能しません。

population =[]
class person():pass
def createdarwin(name):
    global population
    darwin=p.image.load('darwin.png')
    vars()[name]=person(darwin)
    population.append(name)
def main():
    createdarwin('jackie')
    for i in population:
                eval(i).update()
4

1 に答える 1

5

可変名の変数が必要な場合は、代わりに辞書を使用してください。その後、あなたは必要ありません、そしてあなたは必要vars()ありませんeval()

population = {}
class Person(object):
    pass

def create_darwin(name):
    darwin = p.image.load('darwin.png')
    population[name] = person(darwin)

def main():
    create_darwin('jackie')
    for name in population:
        population[name].update()
于 2012-06-18T18:45:26.623 に答える