본문 바로가기
실버를 위한 코딩/파이썬

[내장 함수] 파이썬 내장 함수 'setattr()'

by forSilver 2024. 10. 9.
반응형

파이썬 내장 함수 'setattr()'

파이썬의 내장 함수 setattr()는 객체에 동적으로 속성을 추가하거나 기존 속성의 값을 수정할 때 사용됩니다. 이 함수는 동적으로 객체 속성을 관리할 수 있는 강력한 도구입니다.

setattr() 함수의 문법

setattr(object, name, value)
  • object: 속성을 추가하거나 수정할 객체.
  • name: 추가하거나 수정할 속성의 이름 (문자열로 전달).
  • value: 해당 속성에 설정할 값.

동작 원리

  • setattr() 함수는 객체에 지정한 이름의 속성을 생성하거나 수정하며, 만약 해당 속성이 이미 존재한다면 그 값을 변경합니다.
  • 만약 해당 속성이 존재하지 않으면 새로 생성됩니다.

예시 1: 객체에 속성 추가하기

class MyClass:
    pass

obj = MyClass()

# 새로운 속성 추가
setattr(obj, 'new_attribute', 'Hello, world!')

# 추가된 속성 확인
print(obj.new_attribute)  # 출력: Hello, world!

예시 2: 기존 속성 수정하기

class MyClass:
    def __init__(self):
        self.attribute = 'Old Value'

obj = MyClass()

# 기존 속성 출력
print(obj.attribute)  # 출력: Old Value

# 속성 값 수정
setattr(obj, 'attribute', 'New Value')

# 수정된 속성 출력
print(obj.attribute)  # 출력: New Value

주의사항

  • setattr()로 동적으로 추가된 속성은 해당 객체에서만 적용됩니다.
  • 만약 클래스의 속성을 수정하려면 객체가 아니라 클래스 자체에 setattr()을 적용해야 합니다.

유용한 사용 예시

  1. 동적 속성 관리: 속성의 이름을 변수로 처리하여 동적으로 객체에 속성을 추가하거나 수정할 수 있습니다.
  2. 메타 프로그래밍: 객체에 대한 정보를 기반으로 속성을 유연하게 관리할 수 있습니다.

예시 3: 속성 이름을 동적으로 처리하기

class MyClass:
    pass

obj = MyClass()

# 동적 속성 이름
attribute_name = 'dynamic_attribute'

# 동적으로 속성 추가
setattr(obj, attribute_name, 'Dynamic Value')

# 추가된 속성 출력
print(obj.dynamic_attribute)  # 출력: Dynamic Value

 

VSCode에서 실행

 

이와 같이 setattr() 함수는 파이썬에서 객체의 속성을 동적으로 관리할 때 매우 유용합니다.