2016-05-28 8 views
1

Pythonクラス内のすべての変数を一覧表示し、プログラムの実行が終了した後、私はちょっと私のクラスは次のようになりますので、私はクラスを作った

var1: val 
var2: val 
etc 

のように持っているすべての変数をリストしたいです

class character: 

    name = 'Player1' 
    level = 1 
    str = 100 
    con = 80 
    sta = 150 
    critchance = 0.1 
    critdmg = 0.5 

    # for battle 
    hp = con * con 
    thoughness = math.sqrt(sta) 
+0

「すべての変数」とはどういう意味ですか?クラスの現在のインスタンスのすべての現在の属性をすべて意味しますか?実際には現在定義されているすべての変数ですか? –

+0

strとcritchanceのような、クラスのために作られた変数を意味します。 –

+1

組み込みの 'vars()'と 'dir()'関数を見てください。 – martineau

答えて

0

あなたの探しているものは?

for var in dir(character): 
    if var[:2] != '__': 
     print '%s:' % var, getattr(character, var) 
+1

'eval'の代わりに' getattr'を使うのが良いです。 – DeepSpace

+0

提案していただきありがとうございます@DeepSpace。私はそれに応じて私の答えを編集するつもりです。 – Tonechas

1

あなたは__dict__クラスのから変数を抽出するために辞書を理解(パイソンを想定し2.6+)を使用することができます:

print({k: v for k, v in character.__dict__.items() if not k.startswith('__')}) 
>> {'con': 80, 'level': 1, 'critchance': 0.1, 'sta': 150, 
    'str': 100, 'name': 'Player1', 'critdmg': 0.5} 

あなたが指定した例では、これらはインスタンス変数ではなくクラス変数です。

関連する問題