728x90
이번에는 클래스의 attribution(속성)에 접근하고, 수정하는 데 사용되는 내장함수에 대해 소개하려고 합니다.
왜 사용하는가
이 함수들을 통해 객체의 속성을 동적으로 조작할 때 유용하게 사용합니다. 특히 객체 지향 프로그래밍에서 이러한 기능은 유연성을 제공하여 동적으로 수정하는데 매우 큰 도움이 되는 함수들입니다.
getattr
getattr 함수는 객체의 특정 속성 값을 가져옵니다. 만약 그 속성이 존재하지 않을 경우 선택적으로 기본값(default)을 반환할 수 있습니다.
# 사용법
getattr(object, name[, default])
속성이 존재하는 경우
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 30)
# name 속성 가져오기
name = getattr(person, "name")
print(name) # 출력: Alice
속성이 존재하지 않는 경우
# 존재하지 않는 속성에 대해 기본값 반환
height = getattr(person, "height", 160)
print(height) # 출력: 160 (기본값으로 설정된 값)
# 속성이 추가되지는 않고 기본값으로 설정된 값만 출력
setattr
setattr 함수는 객체의 속성을 지정된 값으로 설정합니다. 만약 해당 속성이 존재하지 않으면 새로운 속성을 생성합니다.
setattr(object, name, value)
속성이 존재하는 경우
class Person:
def __init__(self, name):
self.name = name
person = Person("Bob")
setattr(person, "name", "Kim")
print(person.name) # 출력 : Kim
속성이 존재하지 않는 경우
# age 속성 설정
setattr(person, "age", 25)
print(person.age) # 출력: 25
hasattr
hasattr 함수는 객체에 특정 속성이 있는지 없는지를 확인합니다. 있으면 True를, 없으면 False를 반환합니다.
hasattr(object, name)
속성이 존재하는 경우
class Person:
def __init__(self, name):
self.name = name
person = Person("Carol")
# name 속성이 있는지 확인
print(hasattr(person, "name")) # 출력: True
속성이 존재하지 않는 경우
# age 속성이 있는지 확인
print(hasattr(person, "age")) # 출력: False
delattr
delattr 함수는 객체의 특정 속성을 삭제합닏. 만약 해당 속성이 없으면 AttributeError을 발생시킵니다.
delattr(object, name)
속성이 존재하는 경우
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Dave", 40)
# age 속성 삭제
delattr(person, "age")
# age 속성이 삭제되었는지 확인
print(hasattr(person, "age")) # 출력: False
속성이 존재하지 않는 경우
# country 속성 삭제
delattr(person, "country") # 출력 : AttributeError: country
객체의 속성을 동적으로 수정, 조회, 추가와 삭제하는 방법에 대해 알아봤습니다.
'Coding > Python' 카테고리의 다른 글
[Python] Docstring에 대해 알아보자 (0) | 2024.04.16 |
---|---|
[Python] tqdm - Python에서 진행률을 시각적으로 표시 (0) | 2024.03.20 |
[Python] assert, 가정 설정문 사용법 정리 (0) | 2024.01.17 |
[Python] Jupyter Notebook 가상환경 커널 추가 및 삭제 (0) | 2024.01.11 |
[Python] *args 와 **kwargs의 차이 (0) | 2024.01.03 |