2016-05-28 20 views
1

ich eine Klasse gemacht haben, und nachdem das Programm ausgeführt wird beendet ist, möchte ich, dass ich ein bisschenListing alle Variablen in einer Python-Klasse

var1: val 
var2: val 
etc 

meine Klasse wie folgt aussieht, so haben alle Variablen aufzulisten

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

Was meinen Sie "alle Variablen, die ich habe"? Meinst du alle aktuellen Attribute aller aktuellen Instanzen der Klasse? Oder eigentlich alle derzeit definierten Variablen? –

+0

Ich meine die Variablen, die ich für die Klasse gemacht habe, wie str und critchance –

+1

Werfen Sie einen Blick auf die eingebauten 'vars()' und 'dir()' Funktionen, – martineau

Antwort

0

Ist etwas wie das, wonach Sie suchen?

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

Verwenden Sie besser "getattr" anstelle von "eval". – DeepSpace

+0

Vielen Dank für den Vorschlag @DeepSpace. Ich werde meine Antwort entsprechend bearbeiten. – Tonechas

1

können Sie Wörterbuch Verständnis verwenden (vorausgesetzt, Python 2.6+) die Variablen aus der Klasse __dict__ zu extrahieren:

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} 

Beachten Sie, dass es sich bei dem von Ihnen bereitgestellten Beispiel um Klassenvariablen und nicht um Instanzvariablen handelt.