2011-01-20 13 views
2

私は単純なPythonゲームを作っています。私は各行に以下のテキストファイルを持っています:プレーヤー名、プレーヤーIP、プレーヤーの健康状態、プレイヤーアイテム。Python:ループ内でPlayerクラスを動的にインスタンス化する最良の方法は?

私はファイル内の各行に入り、各プレーヤーの変数を取得します(テキストファイルの各行はプレーヤーです)。

私はPlayerと呼ばれるクラスを持っていますが、私は各プレイヤーごとに1つのインスタンスが必要です。

私はPlayerのすべてのインスタンスを含む配列を持っていたいと思いますが、これをどのように行うことができないのかわかりません!それは本当に私を困惑させる。

読んでいただきありがとうございます!

答えて

1

スヴェンは良い答えを持っていますが、でも、最初の行を廃止し、ちょうど

config = [line.split(',') for line in open("config")] 

それとも、実際に選手をインスタンス化することもできますとしての操作を行うことができます

config = [Player(line.split(',')) for line in open("config")] 

をあなたが」あなたのゲームのためのより多くのcsv設定をやっていき、csvモジュールを調べてください。

players = map(lambda tuple_args: Player(*tuple_args), (line.split(',') for line in open("config"))) 

または単純なリストの内包を使用して:あなたがする必要がどのような

+0

私はファイルからデータを分割する方法を尋ねていません - 私はすでにそれを行っています。私はどのように私はループ内の各プレーヤーのために自分のクラスをインスタンス化することができます尋ねている。 – Tommo

+0

このアップデートのおかげで、config変数は、config [0] =最初のPlayerオブジェクト、config [43]、44番目のプレイヤオブジェクトなどの配列になります。 – Tommo

+0

ループを使用しないで、上記のリストの理解を使用してください。 – Endophage

0

は、コンストラクタを呼び出し、あなたがインスタンス化のパラメータとして設定ファイルに何を読んで展開するマップ機能を使用している

players = [Player(*(line.split(','))) for line in open("config")] 
関連する問題