Python access member with string

2021. 12. 10. 13:38Programming/Python

    목차
반응형

Python class의 맴버에 값을 설정해야 할 때가 있다. 그런데, member가 너무 많은 경우 일일이 값들을 set, get 하는 코드를 작성하기 힘들 수 있습니다.
이런 경우 매우 손쉽게 string 배열을 통해 값을 설정하는 법을 알려드리겠습니다.

class 정의

아래와 같이 3개의 member attribute를 지니고 있는 class가 있다고 합시다.

class Item:
    def __init__(self):
        self.key = None
        self.cat = None
        self.file = None

일반적인 값 설정 방법

위 class에 값을 설정하는 일반적인 방법은 다음과 같습니다.

item = Item()

item.key = 1
item.cat = 3
item.file = 'filename'

위의 경우는 단지 3개의 member만 존재하여 설정이 어렵지 않습니다만, member가 수십개가 될 경우 일일이 이를 나열하여 코딩하게되면 버거로운 일이 아닐 수 없습니다.

setattr 사용

이런 경우 setattr을 사용해 값을 설정할 수 있습니다.
여러 field들이 있고 이에 설정할 값들을 list로 정의합니다.

attrs = [
    ('key', 20), ('cat', 5), ('file', 'file1.txt)
]

for member, value in attrs:
    setattr(item, member, value)

getattr

반대로 값을 가져오고자 하는 경우 getattr을 사용할 수 있습니다.

for member, value in attrs:
    val = getattr(item, member)
반응형

'Programming > Python' 카테고리의 다른 글

[Python] Lambda expression (람다 표현식)  (0) 2021.12.13
Python access member as string  (0) 2021.12.10
openpyxl sheet  (0) 2021.12.10
openpyxl sheet  (0) 2021.12.10
[Python] dictionary 응용  (0) 2021.09.27