2017-05-09 2 views
0

Ich hatte dieses Problem in der Vergangenheit und habe nie die Lösung gefunden. Ich habe die Links von Google überprüft und weiß es immer noch nicht. Was ich tun möchte, ist eine Zeichenfolge als Variable verwenden. Ich arbeite mit sqlalchemy wird so das Beispiel verwenden gerade von meinem Projekt: (sucht die Variable 'Ziel' in der Funktion)Eine Zeichenfolge in eine Variable oder ein Objekt umwandeln, Python

Hier ein Beispiel:

def win_ratio_p_obj(objective): 
    #want to find the win/loss ratio for each obj_first, ie. 60% of times when team gets fblood you also win vs. 40% of time you lose 
    obj_totals = session.query(Match.win, func.count(Match.win)).filter(Match.**objective** == 't').group_by(Match.win).order_by(Match.win).all() 
    win_chance = obj_totals[1][1]/(obj_totals[0][1]+obj_totals[1][1]) 
    return win_chance 

objective = 'first_dragon'  
x = win_ratio_p_obj(objective) 
objective = 'first_blood' 
y = win_ratio_p_obj(objective) 
objective = 'first_turret' 
z = win_ratio_p_obj(objective) 
objective = 'first_inhib'  

Returns:

Traceback (most recent call last): 
    Python Shell, prompt 15, line 1 
builtins.AttributeError: type object 'Match' has no attribute 'objective' 

Also was ich tun möchte ist, jedes Objektiv als Variablennamen mit dem Ziel zu verwenden, die Codewiederholung zu reduzieren. Ich weiß, ich könnte sehr leicht kopieren die Funktion ein paar Mal, aber das scheint albern. Momentan erkennt der obige Code die Werte der Zielvariablen nicht als Variablen, sondern als Variablen.

Alle Antworten werden sehr gut geschätzt!

+0

'getattr (Spiel, Ziel)'. –

Antwort

1

Es scheint, wie Sie getattr verwenden:

getattr(Match, objective) 
+0

Vielen Dank! Liebe die SO-Community! –

Verwandte Themen