2014-10-12 1 views
1

name 변수를 가져 오는 방법이 있습니까?현재 함수의 getattr

def save_info(self): 
    name = 'hello' 
    var1 = 'other item' 
    var2 = 1 
    ... 
    TV_SERIES_FIELDS_TO_UPDATE = ['name', 'var2', 'var3', 'var4', ...] 
    for field in TV_SERIES_FIELDS_TO_UPDATE: 
     current_value = getattr_or_none(obj, field) 
     new_value = # how do I get the variable of `name` ("hello") ? 

변수 이름의 문자열이 주어지면 현재 함수 내에서 그 값을 어떻게 얻을 수 있습니까?

+0

... 무엇? 'new_value = name'을 사용해 보셨나요?! – jonrsharpe

+0

''name'의 변수가 정확히 무엇을 의미합니까? – NPE

+0

@NPE 업데이트 된 질문보기 – David542

답변

1

사용 locals()는 :

def save_info(): 
    name = 'hello' 
    var1 = 'other item' 
    var2 = 1 
    TV_SERIES_FIELDS_TO_UPDATE = ['name', 'var1', 'var2'] 
    for field in TV_SERIES_FIELDS_TO_UPDATE: 
     print field, locals()[field] 

save_info() 

그러나, 나는 당신이 명시 적 사전을 사용하는 대신 관련이없는 변수의 무리를 고려해 촉구 것입니다.

1

은 두 가지 옵션

액세스 지역 변수

def save_info(self): 
    name = 'hello' 
    var1 = 'other item' 
    var2 = 1 
    ... 
    TV_SERIES_FIELDS_TO_UPDATE = ['name', 'var2', 'var3', 'var4', ...] 
    for field in TV_SERIES_FIELDS_TO_UPDATE: 
     current_value = getattr_or_none(obj, field) 
     new_value = locals().get(field) 

을 가지고 있지만 내가 당신이라면 나는 코드를 다시 작성하고 사전을 사용합니다.

TV_SERIES_FIELDS_TO_UPDATE = { 'name_of_the_show': 'value', 'second_show': 'value2' } 
for key, value in TV_SERIES_FIELDS_TO_UPDATE.items(): 
    new_value = # od some magic with value 
관련 문제