1

オブジェクト指向を使用してゲームを作成しようとしています。ルームにアクセスしてアクティビティを実行できるようにしたいのですが、各ルームで特定のアクティビティしか実行できないようにしたいと考えています。オブジェクトに割り当てられたすべてのアクティビティがあり、プレイヤーが入力した変数を使用してオブジェクトの変数にアクセスし、部屋で何をしたかを出力したいと考えています。

    if activitiesList[i] == choice2:
        convert = (activitiesList2[i + 1])
        convert = str(convert)
        print ('You', a.convert, 'in', a.name)

Convert はリストからアクティビティの名前を取得し、探している変数をオブジェクトに伝えたいと思います。私が試したことはすべて、プログラムがオブジェクトの属性「変換」を探しているだけです。プレイヤーが選択した属性を検索するにはどうすればよいですか?

4

3 に答える 3

1

あなたが何を求めているのか完全には明らかではありませんが、私はあなたが望んでいると思いますgetattr:

action = getattr(a, convert)
于 2012-11-26T10:08:21.773 に答える
1

getattr()属性に動的にアクセスする場合は、次の関数を使用できます。

try:
    value = getattr(a, attribute_name)
except AttributeError:
    # attribute not found
    pass

または、例外をスローする代わりに、属性が存在しない場合に返されるデフォルト値を指定することもできます。

value = getattr(a, attribute_name, default_value)
于 2012-11-26T10:08:49.107 に答える
0

リストの代わりにdictを使用してみましたか?

stuff_in_room = {'hammer': ...}
if action in stuff_in_room:
    # do something
else:
    # can't do that
于 2012-11-26T10:09:57.980 に答える