안녕하세요. 이번 시간에는 python의 setattr에 대해 간단하게 알아보겠습니다.
먼저 A 클래스는, __init__ 함수가 호출되면, a, b, c에 각각 0을 넣습니다. 다음에, 객체를 표현하는 __repr__은 a=a의 값, b=b의 값, c=c의 값 형태로 출력해 줍니다.
객체 a를 생성하고, a와 b와 c에 각각 1을 넣어보겠습니다. 그 다음에 a를 출력해 보겠습니다.
그러면 a=1, b=1, c=1이 나옵니다. 그런데, 속성 값이 100개쯤 있고, 딕셔너리에도 속성 값이 100개쯤 있는데 일일히 a.a = 1, a.b = 1 이런 식으로 넣기는 코드가 너무 길어질 겁니다.
setattr 함수를 알아보겠습니다.
setattr(x, 'y', v)는 x.y = v와 같다고 되어 있습니다. 즉, 객체 x의 y라는 속성에 v라는 값을 넣는 것입니다. 되게 간단한 거 같습니다? 그러면, 한 번 이용해 봅시다.
객체 하나를 생성합니다. 다음에, setattr(a, "a", 2)로 a.a = 2와 같은 효과를 냅니다. 다음에, a.b = 2, a.c = 3을 수행합니다.
결과는 어떻게 나올까요? a=2, b=1, c=1과 같이 나오게 됩니다.
이를 이용해서, 딕셔너리 등에 있는 속성들을 죄다 객체에 넣을 수도 있습니다. 딕셔너리에서 items는 순회를 하면 k, v 쌍으로 돌려주게 됩니다. 이를 이용해서 딕셔너리에서 순회를 하면서 setattr을 사용하면 되겠습니다. 아래 코드를 봅시다.
11번째 줄에 k와 v 쌍은 ("a", 2), ("b", 3), ("c", 1) 순서로 들어와요. 결국 for loop를 돌면서 a.a = 2, a.b = 3, a.c = 1이 수행되는 것과 같습니다. 따라서, 12번째 줄 print 문을 수행하면 아래와 같이 출력됩니다.
a=2, b=3, c=1. 잘 나왔습니다.
'레퍼런스 > 예제' 카테고리의 다른 글
파이썬 ordereddict popitem으로 딕셔너리의 첫 번째 값과 마지막 값을 얻어오는 방법을 알아봅시다. (0) | 2023.02.13 |
---|---|
batch 연산을 할 때 많이 쓰일 법한 itertool의 islice 함수를 알아봅시다. (0) | 2023.02.10 |
파이썬 timeit 모듈로 실행 시간을 간단하게 측정해 봅시다. (0) | 2022.12.13 |
파이썬 strptime 함수와 strftime 함수에 대해 알아봅시다. (0) | 2022.12.11 |
python shutil의 rmtree와 os의 rmdir에 대해 알아봅시다. (0) | 2022.11.23 |
최근댓글