Python

[Python] 동적으로 변수에 접근하기

비번변경 2024. 8. 19. 12:25

개요

특정 변수의 값에 따라 변수를 동적으로 접근하고 싶다.

 

예로 들어, 아래와 같이 API를 호출할 때 사용하기 위한 APICaller라는 클래스가 있다고 하자.

class APICaller():
    def __init__(self):
        self.t10_url = "http://127.0.0.1:10000"
        self.t20_url = "http://127.0.0.1:20000"

APICaller는 API 요청할 서버의 타입 별로 url 값을 갖고 있다. 즉, t10_url은 t10이라는 서버 타입의 url이고, t20_url은 t20이라는 서버 타입의 url이다. 이때, 조건문을 사용하지 않고 API를 보낼 서버 타입을 의미하는 server_type 변수 값에 따라 APICaller 객체의 url 값에 접근했으면 한다.

 

 

방법을 적어둔다.

 

 

방법

2023.03.30-[Python] 객체 속성 관련 함수에서 살펴봤던 getattr 함수를 응용하면 된다. 

getattr 함수는 객체와 변수이름을 전달 받아, 해당 객체의 변수 값을 반환한다. 따라서 변수명을 전달할 때 f-string 등으로 문자열 포맷을 전달하면 조건문 없이도 특정 변수 값에 따라 다른 변수에 접근할 수 있다.

caller = APICaller()
server_type = 't10'
print(getattr(caller, f'{server_type}_url'))

 

 

참고 문서

https://pynative.com/python-instance-variables/

https://stackoverflow.com/questions/29906389/python-accessing-instance-variable-dynamically-in-method