Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python setattr() 함수 완벽 정리 – 객체 속성을 동적으로 설정하는 방법

setattr() 메서드란?

파이썬의 내장 함수인 setattr()은 객체에 주어진 속성(attribute)의 값을 설정(할당)하는 데 사용됩니다. 일반적으로 obj.name = value 형태로 속성을 지정하지만, 속성 이름이 문자열로만 존재하거나 프로그램 실행 중에 동적으로 결정되어야 하는 경우에는 setattr()이 매우 유용하게 활용됩니다.

문법

setattr() 메서드의 기본 문법은 다음과 같습니다.

setattr(object, name, value)

매개변수

setattr() 메서드는 세 개의 매개변수를 받습니다.

  • object : 속성을 설정할 대상 객체입니다.
  • name : 설정할 속성의 이름으로, 반드시 문자열(string) 형태여야 합니다.
  • value : 해당 속성에 할당할 값입니다.

반환값

setattr() 메서드는 아무 값도 반환하지 않습니다(None 반환). 즉, 새로운 값을 만들어내는 것이 아니라 단순히 객체의 속성 값을 변경하는 역할만 수행합니다.

예제

다음 예제는 setattr()을 사용하여 객체의 name 속성 값을 변경하는 과정을 보여줍니다.

class Male:
    name = 'Abel'

x = Male()
print('Before modification:', x.name)

# name 속성을 'Jason'으로 설정
setattr(x, 'name', 'Jason')
print('After modification:', x.name)

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Before modification: Abel
After modification: Jason

동적 속성 설정 활용 예

setattr()은 속성 이름을 미리 알 수 없거나, 반복문을 통해 여러 속성을 한 번에 설정해야 할 때 특히 강력합니다.

class Person:
    pass

info = {'name': 'Jason', 'age': 30, 'job': 'developer'}
p = Person()

for key, value in info.items():
    setattr(p, key, value)

print(p.name)  # Jason
print(p.age)   # 30

또한 setattr()은 짝을 이루는 getattr() 함수와 함께 사용하면, 객체의 속성을 읽고 쓰는 작업을 모두 동적으로 처리할 수 있어 유연한 코드 작성에 큰 도움이 됩니다.